Java 如何使用BufferedReader获取整数
我正在为自己写一个小程序,突然遇到了一个问题 我希望能够在控制台中键入一个数字,并提取变量的数字。 直到现在我才明白Java 如何使用BufferedReader获取整数,java,console,int,Java,Console,Int,我正在为自己写一个小程序,突然遇到了一个问题 我希望能够在控制台中键入一个数字,并提取变量的数字。 直到现在我才明白 int aNumber = Integer.parseInt(br.readLine()); 除非我想在控制台中输入的不是数字的东西时出错 类似这样的东西,但当然起作用: void Test() { while (true) { try { aNumber = Integer.parseInt(br.readLine());
int aNumber = Integer.parseInt(br.readLine());
除非我想在控制台中输入的不是数字的东西时出错
类似这样的东西,但当然起作用:
void Test() {
while (true) {
try {
aNumber = Integer.parseInt(br.readLine());
} catch (IOException e) {
e.printStackTrace();
}
if (aNumber >= 1) {
System.out.println("Hurray you enterd a number! It is " + aNumber + ".");
return;
} else {
System.out.println("Error: Something went wrong. Please try again.\n");
}
}
}
如果您输入一个数字,它工作正常。但我希望能够输入文本并得到一个错误,然后再试一次
在控制台中键入的示例:
一,
答复:
万岁!你输入了一个数字!它是1。
=====
2564
答复:
万岁!你输入了一个数字!是2564。
=====
eaf123
答复:
错误:出了问题。请重试。
=====
谢谢大家的帮助
Lars Meeuwsen您可以做的最简单的事情是捕获
数字格式异常
,然后打印您想要的消息
请参见下面的工作示例:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class ReadNumber {
public static void main(String[] args) {
int aNumber = 0;
while (true) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
try {
aNumber = Integer.parseInt(br.readLine());
} catch (NumberFormatException e) {
System.out.println("That wasn't a number.");
continue;
} catch (IOException e) {
e.printStackTrace();
}
if (aNumber >= 1) {
System.out.println("Hurray you entered a number! It is " + aNumber + ".");
continue;
} else {
System.out.println("Error: Something went wrong. Please try again.\n");
}
}
}
}
这会奏效的。我希望你能理解解决办法<如果解析失败,code>Integer.parseInt()将抛出
NumberFormatException
void test() {
while (true) {
int aNumber;
try {
aNumber = Integer.parseInt(br.readLine());
System.out.println("Hurray you enterd a number! It is " + aNumber + ".");
return;
} catch (NumberFormatException | IOException e) {
System.out.println("Error: Something went wrong. Please try again.\n");
}
}
}
您的代码不起作用,因为输入字符串或除
int
以外的任何其他类型会生成NumberFormatException
,您无法捕获它
if语句是不必要的,因为只有在给定文本时才会执行catch块。转换时将引发异常,因此下面的行将不会执行
请检查这个代码
void Test() {
while (true) {
try {
aNumber = Integer.parseInt(br.readLine());
System.out.println("Hurray you enterd a number! It is " + aNumber + ".");
return;
} catch (NumberFormatException | IOException e) {
e.printStackTrace();
System.out.println("Error: Something went wrong. Please try again.\n");
}
}
}