这是我的代码:
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"
。
问题:
我该怎么做才能改进我的代码?
答案 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.");