2015-04-04 59 views
0

我在我的if行上得到不兼容的操作數類型int和java.lang.String。我不知道它是什麼問題或如何解決它。是什麼導致這種「不兼容的操作數類型int和java.lang.String」

import java.io.*; 
import static java.lang.System.*; 

//不知道羯羊高於進口需要或不 進口java.util.Scanner的;

class Main{ 

    public static void main (String str[]) throws IOException { 

      Scanner scan = new Scanner(System.in); 

      String ap = "April"; 
      String mar = "March"; 

     int one = 1; 
     int two = 2; 

     System.out.println("What month were you born in? (number)"); 
     int month = scan.nextInt(); 
     System.out.println("What day (number)"); 
     int day = scan.nextInt(); 
     if(((month == ap) && (day <= 19) || (month == mar) && (day >= 21))){ 
      System.out.println("Your birthday is: "+ month+ " "+day); 
      System.out.println("Aries"); 
      System.out.println("Horoscope: "); 
     }else 
      System.out.println("HI"); //Just some filler code for compiling 



    } 

} 
+0

數字'n'(如** 1 **或** 2 **)會如何像「April」這樣的字符串? – 2015-04-04 20:02:32

+0

您嘗試比較不可能的字符串和整數。 – 2015-04-04 20:02:56

+3

你比較'month == mar'或者等價地比較'''3 ==「March」''的意圖是什麼?即使編譯它也不會匹配。您應該將文本的月份讀作文本(並與'equals' /'equalsIgnorecase'進行比較),或者在月份中使用數字,而不是變量中的英文名稱。 – 2015-04-04 20:04:45

回答

2

你不能比較Stringint直接(你可以得到一個intString價值,但我不相信這將幫助你在這裏),也是唯一的進口靜態那將是有意義的我在你的用例中是java.util.Calendar.*。然後,您需要從輸入月份中減去一個月份,因爲Java將Calendar.JANUARY(第一個月和Static Import所做的)視爲0月份。最後,當您的輸入不在預期範圍內時,請顯示一些有意義的內容,而不是「HI」。類似於

import java.io.IOException; 
import java.util.Scanner; 
import static java.util.Calendar.*; 

class Main { 
    public static void main(String str[]) throws IOException { 
     Scanner scan = new Scanner(System.in); 
     System.out.println("What month were you born in? (number)"); 
     int month = scan.nextInt() - 1; 
     System.out.println("What day (number)"); 
     int day = scan.nextInt(); 
     if (((month == APRIL) && (day <= 19) || 
       (month == MARCH) && (day >= 21))) { 
      System.out.println("Your birthday is: " + month + " " + day); 
      System.out.println("Aries"); 
      System.out.println("Horoscope: "); 
     } else { 
      System.out.printf("Month %d, Day %d%n", month, day); 
     } 
    } 
} 
相關問題