“?:”指令出错。不是声明

时间:2014-11-13 15:22:58

标签: java if-statement

这是我的代码:

public class Zad34 {

    public static void main (String [] args) {

           boolean czyPada = true;
           (czyPada = (czyPada = true) ? System.out.println ("Pada.") : System.out.println ("Niepada."));
    }
}

我在"?:"指令行中有一个错误,描述为"not a statement"

问题:

我该怎么做才能改进我的代码?

5 个答案:

答案 0 :(得分:9)

  • 您将在括号之间附上您的陈述,但不会编译
  • 您使用的是三元运算符来指定czyPada boolean,但System.out.println(..)返回void,而不是boolean

答案 1 :(得分:4)

这段代码有很多令人困惑的事情发生。

没有理由为czyPada分配新值。它不能根据程序的任何内容进行更改。

您应该使用?:来确定从表达式返回的值,而不是副作用。冒号前后的部分应该是表达式。不允许返回类型为void的语句和方法调用。 (你可以让三元表达式的每个部分都调用一个返回某些东西的方法,并且还有像写入stdout那样的副作用。)

不要在比较中使用=。它确实评估了所设定的价值,但这里不必要和令人困惑。即使czyPada == true是不必要的,czyPada也已经是一个布尔值。

根据czyPada编写一个或另一个字符串,最好写一下:

System.out.println(czyPada ? "Pada." : "Nie pada.");

答案 2 :(得分:1)

不要让它变得复杂,应该如下所示。

 System.out.println(czyPada?"Pada":"Nie Pada.");

答案 3 :(得分:0)

Well Comparison运算符必须是==而不是=

答案 4 :(得分:0)

应该是

System.out.println ((czyPada == true) ? "Pada." : "Nie pada.");