当前位置: 代码迷 >> java >> 三元运算符不是语句
  详细解决方案

三元运算符不是语句

热度:62   发布时间:2023-08-02 11:06:23.0

我有以下三元表达式:

((!f.exists()) ? (f.createNewFile() ? printFile() : throw new Exception("Error in creating file")) : printFile());

出于一个或多个原因,我不知道IDE是对我说的不是陈述。 为什么?

这是无效的,您需要返回一个值

printFile() : throw new Exception("Error in creating file")

试试这个

if(f.exists() || f.createNewFile()) {
  printFile();
}else{
  throw new Exception("Error in creating file");
}

看来您是将其用作陈述而非分配

我认为您需要回到if-else子句,如下所示:

if (!f.exists()) {
   try {
      f.createNewFile();
      printFile();
   } catch(Exception e ) {
      System.out.println("Error in creating file");
   }
} else {
   printFile();
}

“ COND?语句:语句”构造是一个表达式。 它不能用作语句。 如果不进行赋值,则可以在解决函数调用中的条件参数或字符串连接的情况下使用它。

Func( (COND ? param1 : param2) );
"Hi"+(con?"Miss":"Mr.")+"";

三元运算符中的语句必须为非void 他们需要退货。

例:

  • 考虑一种情况,其中count变量递增,我正在检查其值,并在特定阈值之上返回true或false。
  • System.out.println((count >10 ? true: false));
  • 与之相比, count >10 ? true: false count >10 ? true: false ,编译器将抱怨这不是语句。
  相关解决方案