2015-10-20 45 views
0

我的任務是製作一個程序,允許用戶輸入他們的出生日期,並輸出他們的中國生肖動物和他們的占星術標誌。該程序認爲,月份是未聲明的變量,但我試圖讓它們的值爲變量「月」。如何使用字符串作爲輸入值?

下面是代碼,


int day, year; 
String month; 

System.out.println("Enter the month you were born."); 
month=in.nextLine(); 
System.out.println("Enter day you were born."); 
day=in.nextInt(); 
System.out.println("Enter the year you were born."); 
year=in.nextInt(); 

if (month==January && day <=20) 
    System.out.println("You are a Capricorn."); 
if (month==January && day > 20) 
    System.out.println ("You are an Aquarius."); 
if (month==February && day <= 19) 
    System.out.println ("You are an Aquarius."); 
if (month==February && day >19) 
    System.out.println ("You are a Pisces."); 
if (month==March && day <= 20) 
    System.out.println ("You are a Pisces."); 
if (month==March && day > 20) 
    System.out.println ("You are an Aries."); 
if (month==April && day <= 20) 
    System.out.println ("You are an Aries."); 
if (month==April && day >20) 
    System.out.println ("You are a Taurus."); 
if (month==May && day <= 21) 
    System.out.println ("You are a Taurus."); 
if (month==May && day > 21) 
    System.out.println ("You are a Gemini."); 
if (month==June && day <= 21) 
    System.out.println ("You are a Gemini."); 
if (month==June && day >21) 
    System.out.println ("You are a Cancer."); 
if (month==July && day <=22) 
    System.out.println ("You are a Cancer."); 
if (month==July && day >22) 
    System.out.println ("You are a Leo."); 
if (month==August && day <=22) 
    System.out.println ("You are a Leo."); 
if (month==August && day >22) 
    System.out.println ("You are a Virgo."); 
if (month==September && day <=23) 
    System.out.println ("You are a Virgo."); 
if (month==September && day >23) 
    System.out.println ("You are a Libra."); 
if (month==October && day <=23) 
    System.out.println ("You are a Libra."); 
if (month==October && day >23) 
    System.out.println ("You are a Scorpio."); 
if (month==November && day <=22) 
    System.out.println ("You are a Scorpio."); 
if (month==November && day >22) 
    System.out.println ("You are a Sagittarius."); 
if (month==December && day <=21) 
    System.out.println ("You are a Sagittarius."); 
else 
    System.out.println ("You are a Capricorn."); 

回答

5

你需要通過把他們周圍雙引號,讓您的幾個月字符串:

if (month.equals("January") && day <=20) 
System.out.println("You are a Capricorn."); 

實現,用戶將不得不把正好在「一月」,所以「一月」將不起作用。要做到這一點,請確保使用toLower功能。您也可以使用equalsIgnoreCase()

按照每個月的相同模式。任何時候你使用字符串文字,它需要在" "。另外,如果您要比較字符串,則需要使用equals(),如上所示。

正如Luiggi在下面的評論中指出,它會更有意義的事:

if ("January".equals(month) && day <=20) 

這將避免可能出現的NullPointerException錯誤。

+4

'month ==「January」'不是個好主意,'month.equals(「January」)'會在Java中工作得更好 –

+0

Thanks guys guys。還早,還沒有喝咖啡;) – BlackHatSamurai

+3

@AlexShesterov事實上,一個更好的主意是''1月'.equals(month)'以避免NPE。 –

1

嘗試這樣

if (month.equalsIgnoreCase("January") && day <=20) 
     System.out.println("You are a Capricorn."); 

如果用戶類型JANUARYjanuary它會給ü良好的效果。

0

.equals(「Month」)是正確的,但您還需要將「else」添加到除第一個之外的所有if語句。否則,你的最後的else只會應用於在它使得它大部分時間處於執行之前。

0

現在Java並不真正知道你的意思January它認爲你指的是某種變量或關鍵字,它不知道。 通過將"January"放在引號中,就像你說的java一樣,這是一段文本,或者像計算機一樣稱它爲字符串。 專業提示不要與==的字符串進行比較,該字符串用於檢查是否在兩側輸入了相同的對象。由於字符串在Java中的工作方式,在某些情況下會出現一些奇怪的結果。因此,請始終使用myString.equals(someOtherString)來檢查兩個字符串是否具有相同的內容。

相關問題