Java 三元运算符语句上表达式的非法开始
我需要制作一个允许输入一年的程序,该程序需要告诉我们该年(我们在控制台上输入的)是否是闰年 可以除以4但不能除以100的年份是闰年。 可以除以400,也可以除以100的年份是闰年 我需要使用“if”命令进行流量控制和三元运算符 编译器提供了以下信息:Java 三元运算符语句上表达式的非法开始,java,if-statement,ternary-operator,Java,If Statement,Ternary Operator,我需要制作一个允许输入一年的程序,该程序需要告诉我们该年(我们在控制台上输入的)是否是闰年 可以除以4但不能除以100的年份是闰年。 可以除以400,也可以除以100的年份是闰年 我需要使用“if”命令进行流量控制和三元运算符 编译器提供了以下信息: public class V0206 { public static void main(String[] args) { java.util.Scanner sc = new java.util.Scanner
public class V0206 {
public static void main(String[] args) {
java.util.Scanner sc = new java.util.Scanner(System.in);
int x = sc.nextInt();
int y = 400;
int z = 100;
int q = 4;
int rest =(int)(x % y);
int rest2 = (int)(x % z);
int rest3 = (int) (x % q);
String result = (rest3 == 0 && rest2 != 0 || rest == 0 && rest2 == 0 ) ? "Leap year" : "Not leap year";);
if (result = true) {System.out.println("Leap year");}
else
{System.out.println("Not leap year");
}
}
}
删除;)代码>最后一个之前的字符代码>
最后,您的代码应该如下所示:
String result = (rest3 == 0 && rest2 != 0 || rest == 0 && rest2 == 0 ) ? "Leap year" : "Not leap year";
result
是一个字符串,不能与布尔值(true
)进行比较。改用equals
方法。请注意,等于
区分大小写。它的coutterpart是equalsIgnoreCase
有一个额外的;)代码>在您的代码中
字符串结果=(rest3==0&&rest2!=0 | | rest==0&&rest2==0)?“闰年”:“非闰年”
我不确定你的逻辑是否正确。你应该这样做:-
如果(结果等于(“闰年”))
System.out.println(“闰年”);
其他的
System.out.println(“非闰年”)
应该解决两个问题:
1) 删除要给出的额外分号
public class V0206 {
public static void main(String[] args) {
java.util.Scanner sc = new java.util.Scanner(System.in);
int x = sc.nextInt();
int y = 400;
int z = 100;
int q = 4;
int rest = (int) (x % y);
int rest2 = (int) (x % z);
int rest3 = (int) (x % q);
String result = (rest3 == 0 && rest2 != 0 || rest == 0 && rest2 == 0) ? "Leap year" : "Not leap year";
// This if statement can be replaced by System.out.println(result);
if (result.equals("Leap year")) {
System.out.println("Leap year");
} else {
System.out.println("Not leap year");
}
}
}
2) 如果(result=true)
,则重构此行。这是试图将true
分配给结果
(这不会编译,您可能也指=
)。但是不能将相等与这样的字符串进行比较:应该使用equals()
或contentEquals()
我怀疑你想做的就是System.out.println(字符串)代码>三个问题
额外的;)三元操作中的代码>
使用=
运算符将字符串与布尔值进行比较
结果的值将是闰年
或非闰年
,非“真”
或真
String result = (rest3 == 0 && rest2 != 0 || rest == 0 && rest2 == 0 ) ? "Leap year" : "Not leap year");
或者,您可以像这样进行微调
String result = (rest3 == 0 && rest2 != 0 || rest == 0 && rest2 == 0 ) ? "Leap year" : "Not leap year";
if (result.equals("Leap year")) {
System.out.println("Leap year");
}
else
{
System.out.println("Not leap year");
}
Hlo。首先检查基本错误。
试试下面的代码
boolean result = (rest3 == 0 && rest2 != 0 || rest == 0 && rest2 == 0 ) ? true: false;
if(result){
System.out.println("Leap year");
}
else
{
System.out.println("Not leap year");
}
}
}
//一个错误,比如。。您添加了额外的分号。并检查字符串变量,如布尔变量 使用括号明确你的意图。第15行有一个非法的括号。另外(但与主要问题无关),如果(结果==true){…}
,不要做if(结果){…}
,如果(结果=true)
看起来不好,原因很多,比如赋值而不是比较,使用不正确的类型,并将结果与上一行中的“闰年”或“非闰年”进行比较。好的,删除括号和“;”这太过分了。仍然无法编译。@Pshemo我在代码中添加了一条注释,用于提及您的。。。评论。
boolean result = (rest3 == 0 && rest2 != 0 || rest == 0 && rest2 == 0 ) ? true: false;
if(result){
System.out.println("Leap year");
}
else
{
System.out.println("Not leap year");
}
public class V0206 {
public static void main(String[] args) {
int x = sc.nextInt();
int y = 400;
int z = 100;
int q = 4;
int rest = (int) (x % y);
int rest2 = (int) (x % z);
int rest3 = (int) (x % q);
boolean result = (rest3 == 0 && rest2 != 0 || rest == 0 && rest2 == 0) ? true
: false;
if (result == true) {
System.out.println("Leap year");
} else {
System.out.println("Not leap year");
}