【问题标题】:Too large of an integer整数太大
【发布时间】:2015-01-26 13:59:26
【问题描述】:

我正在使用 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 为整数文字添加前缀会导致它被解释为以 8 为基数(八进制)的数字。去掉前导零。

标签: java bluej


【解决方案1】:

以 0 开头的数字意味着它被解释为八进制,这使得“9”成为无效数字。

【讨论】:

    【解决方案2】:

    数字输入不保存前导0。如果输入0123,然后打印d,会看到“123.0”

    只需去掉所有前导 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.");
        }
    }
    }
    

    【讨论】:

    • 谢谢大家,现在可以使用了。是的,我上面有扫描仪行,我发布的代码行只是我班级的一部分
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-04
    • 2011-04-15
    • 1970-01-01
    • 1970-01-01
    • 2016-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多