java - 用户输入导致错误的 If 语句分支的输出

标签 java if-statement switch-statement

对于我的程序,我试图创建一个公共(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/

相关文章:

java - 纠正和改进java代码

c++ - switch 语句中的 C2196 错误

c# - C# 中的 Switch 语句失败?

java - 真的可以使用 REST 在 Java App Engine 上使用 Twilio 吗?

java - 可序列化是否可继承

java - OSGI 缺少需求错误

c++ - 协助乱码翻译

python - 保留 if 语句中的值

android - 如何显示巨大的类别和子类别列表?

JavaFX : Use custom Node as collapse/expand branch switch for TreeView