是什么导致这种“不兼容的操作数类型int和java.lang.String”

问题描述:

我在我的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

你不能比较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); 
     } 
    } 
}