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");
}
}
}
我需要制作一个允许输入一年的程序,程序需要判断那一年(我们在控制台上输入的)是否是闰年。
年份可分为4年且不可分为100个IS闰年。 可分为400年的年份,也可以在100个IS闰年中分类。
我需要使用“if”命令进行流量控制和三元运算符。
编译器给出了这个:
V0206.java:15: error: illegal start of expression
String result = (rest3 == 0 && rest2 != 0 || rest == 0 && rest2 == 0 ) ? "Leap year" : "Not leap year";);
1 error
Compilation failed.
答案 0 :(得分:5)
String result = (rest3 == 0 && rest2 != 0 || rest == 0 && rest2 == 0 ) ? "Leap year" : "Not leap year";
删除上一个;)
之前的;
个字符。
最后,您的代码应如下所示:
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");
}
}
}
result
是一个字符串,无法与布尔值(true
)进行比较。请改用equals
方法。请注意,equals
区分大小写。它的部分是equalsIgnoreCase
。
答案 1 :(得分:2)
您的代码中还有一个;)
字符串结果=(rest3 == 0&& rest2!= 0 || rest == 0&& rest2 == 0)? “闰年”:“不是闰年”;
我不确定你的逻辑是否正确。你应该做这样的事情: -
if(result.equals(“闰年”)) System.out.println(“闰年”); 其他 System.out.println(“非闰年”);
应该做的工作
答案 2 :(得分:2)
两个问题:
1)删掉额外的分号以给出
String result = (rest3 == 0 && rest2 != 0 || rest == 0 && rest2 == 0 ) ? "Leap year" : "Not leap year");
2)重构此行if (result = true)
。这是将 true
分配给result
的尝试(不会编译,您可能也意味着==
)。但是你无法将相等性与这样的字符串进行比较:你应该使用equals()
或contentEquals()
代替。
我怀疑你想做的只是System.out.println(string);
答案 3 :(得分:2)
三个问题
额外;)
将String与布尔值与==
运算符
结果的值可以是Leap year
或Not leap year
,而不是"true"
或true
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");
}
或者,您可以像这样进行微调,
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");
}
答案 4 :(得分:1)
HLO。好友首先检查基本错误。 试试下面的代码。
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");
}
} }
//一个错误就像..你添加了额外的分号。并检查字符串变量,如布尔变量。