对于我的程序,我试图创建一个公共(public)静态字符串方法,该方法接受一个整数和一个字符串,并根据用户输入的月份输出一个字符串。当我编译代码并运行程序时,当我输入除“二月”之外的任何月份时,控制台都会正确输出正确的字符串消息。但是,当我为 Month_name 输入“二月”时,程序错误地继续处理第一个 if 条件,并输出嵌入在第一个 if 条件中的开关的默认条件。因为month_name 确实等于“February”,所以不应该继续执行else 条件吗?
我检查了代码,想知道是否是因为我没有用括号正确关闭方法,或者我没有在任何语句的末尾添加分号,但这不是案件。我检查以确保所有内容都拼写正确。我检查以确保输入了正确的字符串值,但我无法弄清楚发生了什么。
import java.util.Scanner;
public class DaysInMonth {
public static String daysInaMonth (int year_number, String month_name) {
if(month_name != "February") {
switch(month_name) {
case "January":
case "March":
case "May":
case "July":
case "August":
case "October":
case "December":
return "There are 31 days in " + month_name + " " + year_number;
case "April":
case "June":
case "September":
case "November":
return "There are 30 days in " + month_name + " " + year_number;
default:
return "Please input month";
}
}
else {
if(year_number % 4 == 0) {
return "There are 29 days in February " + year_number;
}
else {
return "There are 28 days in February " + year_number;
}
}
}
public static void main(String[] args) {
Scanner scnr = new Scanner(System.in);
String month = " ";
int year = 0;
year = scnr.nextInt();
month = scnr.next();
System.out.print(daysInaMonth(year, month));
}
}
最佳答案
在java中,不能使用逻辑运算符(==、!=等)来比较字符串。这样做会比较字符串引用(而不是值)。
这样做...
if (!month_name.equals("February")) {
}
关于java - 用户输入导致错误的 If 语句分支的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42882225/