Java 三元运算符不是一个语句
我有以下三元表达式:Java 三元运算符不是一个语句,java,intellij-idea,ternary-operator,Java,Intellij Idea,Ternary Operator,我有以下三元表达式: ((!f.exists()) ? (f.createNewFile() ? printFile() : throw new Exception("Error in creating file")) : printFile()); 出于一个或多个原因,我不知道IDE对我说这不是一个声明。为什么?看起来您将其用作语句,而不是赋值 我认为你需要回到这样一个if-else条款: if (!f.exists()) { try { f.createNewFile
((!f.exists()) ? (f.createNewFile() ? printFile() : throw new Exception("Error in creating file")) : printFile());
出于一个或多个原因,我不知道IDE对我说这不是一个声明。为什么?看起来您将其用作语句,而不是赋值 我认为你需要回到这样一个if-else条款:
if (!f.exists()) {
try {
f.createNewFile();
printFile();
} catch(Exception e ) {
System.out.println("Error in creating file");
}
} else {
printFile();
}
这是无效的,您需要返回一个值
printFile() : throw new Exception("Error in creating file")
试试这个
if(f.exists() || f.createNewFile()) {
printFile();
}else{
throw new Exception("Error in creating file");
}
“COND?Statement:Statement”构造是一个表达式。它不能用作语句。
在没有赋值的情况下,它可以在函数调用中解析条件参数或字符串连接中使用
Func( (COND ? param1 : param2) );
"Hi"+(con?"Miss":"Mr.")+"";
三元运算符中的语句必须是非void。他们需要归还一些东西 例如:
- 考虑这样一种情况,count变量递增,我检查它的值并返回高于某个阈值的true或false
System.out.println((计数>10?真:假))代码>
- 与之相比,
编译器会抱怨这不是一条语句count>10?true:false
throw
吗?@KevinEsche三元运算符不“仅适用于赋值”。我认为该错误是使用f.createNewFile()
引发的,而不会引发自定义异常。至少当我为文件输入无效路径时。我认为建议的代码应该以不同的方式工作,我没有更改功能。即使答案与问题不完全一致,也接受链接正确解释问题。只是你提到赋值有点不合适:三元数的元素必须是表达式(throw不是表达式),三元数本身必须用作表达式(在示例中用作语句)。顺便说一句,Eclipse和javac都报告了throw
上的语法错误。