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;
解决这个问题,它就会正常工作。
您好,提前致谢,
我遇到了问题 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;
解决这个问题,它就会正常工作。