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 的年份为闰年。年份可除以 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.
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
.
三个问题
-
三元运算中的额外
;)
-
将字符串与布尔值与运算符进行比较
==
-
结果的值将是
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");
}
<</div>
div class="one_answers"> 两个问题:
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);
-
代码中有一个额外的
字符串结果 = (rest3 == 0 && rest2;)
!= 0 || rest == 0 && rest2 == 0 ) ?"闰年":"非闰年";
-
我不确定你的逻辑是否正确。你应该做这样的事情:-
if (result.equals("闰年")) System.out.println("Leap year");还 System.out.println("Not leap year");
应该做这项工作
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");
}
} }
一个错误,比如..你添加了额外的分号。 并检查字符串变量,如布尔变量。