Java “?:”指令中有错误。不是声明

Java “?:”指令中有错误。不是声明,java,if-statement,Java,If Statement,这是我的代码: 我在?:指令行中出错,描述为非语句 问题: 我应该做些什么来改进我的代码 您将语句括在括号中,这将无法编译 您正在使用一个三元运算符来指定czyPada,它是一个布尔值,但System.out.println。。返回void,而不是boolean 比较运算符必须是==而不是=。它应该是 System.out.println ((czyPada == true) ? "Pada." : "Nie pada."); 这段代码有很多令人困惑的地方 没有理由给czyPada分

这是我的代码:

我在?:指令行中出错,描述为非语句

问题:

我应该做些什么来改进我的代码

您将语句括在括号中,这将无法编译 您正在使用一个三元运算符来指定czyPada,它是一个布尔值,但System.out.println。。返回void,而不是boolean
比较运算符必须是==而不是=。

它应该是

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

这段代码有很多令人困惑的地方

没有理由给czyPada分配新值。它不能基于程序所做的任何事情而改变

您应该使用?:来决定从表达式返回什么值,而不是副作用。冒号前后的部分应该是表达式。不允许返回类型为void的语句和方法调用。您可以让三元表达式的每个部分调用一个方法,该方法返回一些内容,并且还具有一些副作用,比如写入stdout

不要在比较中使用=。它的计算结果确实与所设置的值相同,但这在这里是不必要的,而且容易混淆。即使czyPada==true是不必要的,czyPada已经是一个布尔值了

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

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

别把事情搞复杂了,应该是这样的

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

您忘记了close}它也应该是czyPada==true。
 System.out.println(czyPada?"Pada":"Nie Pada.");