我正在使用Java制作一个程序,输出用户的星座。当我编译这段代码时,它会突出显示0219并说“整数太大”。我是初学者,所以如果这是一个愚蠢的错误,请你好。感谢
System.out.println("Please enter your birthday month and day as a four digit number");
System.out.println("(Ex: 0514 for May 14th):");
double d = key.nextDouble();
if (d >= 0101 && d <= 0120) {
System.out.println("You are a Capricorn.");
}
else if (d >= 0121 && d <= **0219**) {
System.out.println("You are an Aquarius.");
}
else if (d >= 0220 && d <= 0320) {
System.out.println("You are a Pisces.");
}
else if (d >= 0321 && d <= 0420) {
System.out.println("You are an Aries.");
}
else if (d >= 0421 && d <= 0521) {
System.out.println("You are a Taurus.");
}
else if (d >= 0522 && d <= 0621 ) {
System.out.println("You are a Gemini.");
}
else if (d >= 0622 && d <= 0723 ) {
System.out.println("You are a Cancer.");
}
答案 0 :(得分:3)
以0开头的数字意味着它被解释为八进制,这使得&#34; 9&#34;无效的数字。
答案 1 :(得分:0)
输入数字不会保存前导0.如果输入0123,然后打印d,您将看到&#34; 123.0&#34;
摆脱所有领先的0。
所以你明白了:
import java.util.Scanner;
class Untitled {
public static void main(String[] args) {
System.out.println("Please enter your birthday month and day as a four digit number");
System.out.println("(Ex: 0514 for May 14th):");
Scanner key = new Scanner(System.in);
double d = key.nextDouble();
if (d >= 101 && d <= 120) {
System.out.println("You are a Capricorn.");
}
else if (d >= 121 && d <= 219) {
System.out.println("You are an Aquarius.");
}
else if (d >= 220 && d <= 320) {
System.out.println("You are a Pisces.");
}
else if (d >= 321 && d <= 420) {
System.out.println("You are an Aries.");
}
else if (d >= 421 && d <= 521) {
System.out.println("You are a Taurus.");
}
else if (d >= 522 && d <= 621 ) {
System.out.println("You are a Gemini.");
}
else if (d >= 622 && d <= 723 ) {
System.out.println("You are a Cancer.");
}
}
}