我有以下三元表达式:
((!f.exists()) ? (f.createNewFile() ? printFile() : throw new Exception("Error in creating file")) : printFile());
对于一个或多个原因,我不知道IDE会告诉我这不是一个声明。为什么呢?
答案 0 :(得分:2)
这是无效的,你需要返回一个值
printFile() : throw new Exception("Error in creating file")
尝试这个
if(f.exists() || f.createNewFile()) {
printFile();
}else{
throw new Exception("Error in creating file");
}
答案 1 :(得分:1)
看起来您将其用作声明而非作为作业
From what SO says it is not possible to do so
Also from another SO Articel, that says you can´t throw an exception in the ternary statement
我认为你需要回到这样的if-else子句:
if (!f.exists()) {
try {
f.createNewFile();
printFile();
} catch(Exception e ) {
System.out.println("Error in creating file");
}
} else {
printFile();
}
答案 2 :(得分:0)
" COND?声明:声明"构造是一种表达。它不能用作声明。 如果没有赋值,它可以在函数调用或字符串连接中解析条件参数的情况下使用。
Func( (COND ? param1 : param2) );
"Hi"+(con?"Miss":"Mr.")+"";
答案 3 :(得分:0)
三元运算符中的语句必须非空。他们需要归还一些东西。
示例:
System.out.println((count >10 ? true: false));
count >10 ? true: false
相比,编译器会抱怨这不是声明。