猿问

如何使用 BufferedReader 获取整数

我正在为自己编写一个小程序,但遇到了一个问题。

我希望能够在控制台中输入一个数字,并提取变量的数字。直到此时我才明白。

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

回答:

万岁,您输入了一个数字!是 1。

=====

2564

回答:

万岁,您输入了一个数字!现在是 2564。

=====

电炉123

回答:

错误:出了问题。请再试一次。

=====

感谢所有试图提供帮助的人。

拉尔斯·莫森


慕桂英4014372
浏览 102回答 3
3回答

九州编程

这会起作用。我希望你能理解解决方案。如果解析失败则 Integer.parseInt()抛出。NumberFormatExceptionvoid 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都会生成 aNumberFormatException并且您没有捕获它。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");        }    }}

慕斯王

您可以做的最简单的事情就是捕获NumberFormatException然后打印您想要的消息。请参阅下面的工作示例: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");            }        }    }}
随时随地看视频慕课网APP

相关分类

Java
我要回答