三元运算符中的多个语句
问题描述:
在三元运算符语句中有多个语句的正确语法是什么?三元运算符中的多个语句
str.length() == 1 ? (str = str.replace(0, str.length(), "00") && flag = false) : str = str.deleteCharAt(str.length() - 1);
我需要执行几个语句的时候我StringBuilder str
长度为1
- 与 “00”
- 未设置标志
任何帮助将取代STR不胜感激。
答
AFAIK这是不可能的。在其他语言中,您可以使用昏迷操作符来实现该操作,但在java中不允许。这就是说,在一个三元操作中做多个动作通常是一个非常糟糕的做法:是的,你会保存大约4或5行代码,但是阅读,编辑会更困难,因此,进行调试。
答
如果你绝对必须有一个三元运营商做这就是它如何做到:
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
您可以使用if语句。 – mmking
那么,写这句话的意义在于消除if语句。我目前有这样庞大的逻辑写入。 – Actiwitty
使用If else语句将会有更多的可读代码。 –