gpt4 book ai didi

java - Scanner.nextInt(),超出范围避免?

转载 作者:行者123 更新时间:2023-12-01 17:26:18 25 4
gpt4 key购买 nike

我已经完成了一个简单的程序,将十进制数转换为二进制(32位)。如果用户输入溢出数字(任何超过 2147483647),我想实现某种类型的错误消息。我尝试了 if_else,loop,但很快发现我什至无法做到这一点。所以我搞乱了将输入作为字符串,然后使用诸如 .valueOF() 等的东西,但似乎仍然无法解决解决方案。

如果我无法首先存储该值,我不知道如何将任何值与 a >2147483648 进行比较。

这是我的 getDecimal() 方法的裸代码:

numberIn = scan.nextInt();

编辑::尝试try/catch方法后,遇到编译错误

“不能从静态上下文引用非静态方法 nextInt()”

我的代码如下。

public void getDec()
{
System.out.println("\nPlease enter the number to wish to convert: ");

try{
numberIn = Scanner.nextInt();
}
catch (InputMismatchException e){
System.out.println("Invalid Input for a Decimal Value");
}
}

最佳答案

您可以使用Scanner.hasNextInt()方法,如果下一个标记无法转换为 int,则返回 false。然后在 else block 中,您可以使用 Scanner.nextLine() 将输入读取为字符串。并打印出相应的错误消息。就我个人而言,我更喜欢这种方法:

if (scanner.hasNextInt()) {
a = scanner.nextInt();
} else {
// Can't read the input as int.
// Read it rather as String, and display the error message
String str = scanner.nextLine();
System.out.println(String.format("Invalid input: %s cannot be converted to an int.", str));
}
<小时/>

实现此目的的另一种方法当然是使用 try-catch block 。 Scanner#nextInt()当无法将给定输入转换为整数时,该方法会抛出InputMismatchException。因此,您只需要处理 InputMismatchException: -

try {
int a = scan.nextInt();
} catch (InputMismatchException e) {
System.out.println("Invalid argument for an int");
}

关于java - Scanner.nextInt(),超出范围避免?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14786162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com