Scanner.hasNextLong 错误

Scanner.hasNextLong Error

您好,提前致谢,

我遇到了问题 java.util.Scanner 这是我的代码:

public static void ScanInput(String Choice) {

    if(scanner.hasNextLong()){

        long input = scanner.nextLong();
        long length = String.valueOf(input).length();

        if(length <= 10){

            if(Choice == Choice1){

                Converter.Decimal(input);

            } else if(Choice == Choice2) {

                Converter.Binary(input);

            }
        } else {

            System.out.println(error);

            scanner.close();

            ScanInput(DecimalToBinary.choice);
        }


    } else {

        System.out.println(error);

        scanner.close();

        ScanInput(DecimalToBinary.choice);

    }

    scanner.close();
}

使用这个并不重要。问题是,当我输入大于 10 位的值时,它会崩溃。所以我好像用了一个int左右的??

(因为一个int的最大尺寸)。

但是我用了很长时间....

我的调试讲师指向

if(scanner.hasNextLong()){

这也是事情变得糟糕的地方...... 请帮忙!

如果值大于 9223372036854775807(long 的 MAX 值)则使用 BigInteger,如下所示:

if (scanner.hasNextBigInteger()) {
   BigInteger big = scanner.nextBigInteger();
}

现在编译器将您的输入视为整数,因为显然您的长输入没有后缀 L。在 java 中,长以 L 结尾,例如:

long lg = 24863512789L;

解决这个问题,它就会正常工作。