2013-07-01 70 views
0

我已經制定了一個計劃,以告知哪個季節是基於當月。然而,無論我輸入什麼,它都說它是墮落的。下面是代碼:Java問題:如果/其他

import java.util.Scanner; 
public class SeasonChecker { 

/** 
* @param args 
*/ 
public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    Scanner input = new Scanner(System.in); 

    System.out.println("What month is it??"); 
    String month = input.nextLine(); 
    System.out.println(month); 
    if (month == "december"||month == "January"||month=="February"){ 
     System.out.println("Then it is Winter?"); 
    } 
    else if (month=="March"||month=="May"||month=="April"){ 
     System.out.println("Then it is Spring!!!"); 

    } 
    else if (month=="June"||month=="July"||month=="August"){ 
     System.out.println("Then it is Summer!"); 

    } 
    else { 

     System.out.println("Then it is Autumn!"); 

    } 
    input.close(); 
} 

}

+3

不要將字符串值與'=='進行比較;比較對象引用以確定它們是否是同一個對象。使用'equals'來比較字符串值。 – rgettman

回答

5
month == "december"||month == "January" 

使用equals()方法而比較Strings

實施例:

"december".equals(month) || "January".equals(month) 

==檢查引用相等(兩個引用指向同一個對象都沒有)。 equals()檢查對象的內容。

+2

我更喜歡這個答案,因爲如果'month'爲null,它可以避免nullpointerexceptions。 –

3

在Java中,使用字符串時,應該使用equals方法進行比較,而不是字面==的比較。所以month.equals("January")使用==將比較內存引用並查看它們是否是對象的相同引用。 ==是指像int或雙

2

使用比較文字等於法代替==

if (month.equals("december")||month.equals("January")||month.equals("February")){ 

在Java ==比較參考。但是equals方法比較String的值。