是什么导致这种“不兼容的操作数类型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
}
}
答
你不能比较String
和int
直接(你可以得到一个int
的String
价值,但我不相信这将帮助你在这里),也是唯一的进口静态那将是有意义的我在你的用例中是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);
}
}
}
数字'n'(如** 1 **或** 2 **)会如何像“April”这样的字符串? – 2015-04-04 20:02:32
您尝试比较不可能的字符串和整数。 – 2015-04-04 20:02:56
你比较'month == mar'或者等价地比较'''3 ==“March”''的意图是什么?即使编译它也不会匹配。您应该将文本的月份读作文本(并与'equals' /'equalsIgnorecase'进行比较),或者在月份中使用数字,而不是变量中的英文名称。 – 2015-04-04 20:04:45