三元运算符中的多个语句

6

在三目运算符语句中,如何使用正确的语法来包含多个语句?

str.length() == 1 ? (str = str.replace(0, str.length(), "00")  && flag = false) : str = str.deleteCharAt(str.length() - 1);

当我的 StringBuilder str 的长度为1时,我需要执行一些语句:

  1. 将 str 替换为 "00"
  2. 取消标志

非常感谢您的帮助。


你可以使用一个if语句。 - mmking
写这个语句的目的是为了摆脱 if else 语句。我目前已经写了那个笨重的逻辑。 - Actiwitty
1
使用 if else 语句将会使代码更易读。 - SuperFrog
我同意这一点。但是,有没有办法在三元语句中实现它? - Actiwitty
如果StringBuilder长度为1,我会将标志设置为false。 - Actiwitty
你试图通过使用三元语句来进行什么优化?这看起来像是一种试图创建混淆你和同事们的代码,下次阅读时会让你们感到困惑的尝试。 - Andy Turner
2个回答

4
据我所知,这是不可能的。在其他语言中,您可以使用逗号运算符实现这一点,但在Java中不允许这样做。
话虽如此,在三元操作中执行多个操作通常是非常糟糕的做法:是的,您可以节省大约4或5行代码,但它将更难阅读、编辑和调试。

3

如果你非常必须使用一个三元运算符,那么可以这样实现:

flag = str.length() == 1 ?
    str.replace(0, str.length(), "00") == null :
    str.deleteCharAt(str.length() - 1) != null && flag;

祝你通过代码审查好运。正如其他人所建议的那样,在这里使用if语句是有意义的:

if (str.length() == 1) {
     flag = false;
     str.replace(0, str.length(), "00");
} else {
     str.deleteCharAt(str.length() - 1);
}

1
由于str是一个StringBuilder,请删除str = 部分。 - Andreas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接