为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 BufferedReader 获取整数

如何使用 BufferedReader 获取整数

慕桂英4014372 2023-09-20 16:15:06
我正在为自己编写一个小程序,但遇到了一个问题。我希望能够在控制台中输入一个数字,并提取变量的数字。直到此时我才明白。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回答:错误:出了问题。请再试一次。=====感谢所有试图提供帮助的人。拉尔斯·莫森
查看完整描述

3 回答

?
九州编程

TA贡献1785条经验 获得超4个赞

这会起作用。我希望你能理解解决方案。如果解析失败则 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");


                }

            }

        }


查看完整回答
反对 回复 2023-09-20
?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

您的代码不起作用,因为输入字符串或除 之外的任何其他类型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");

        }

    }

}


查看完整回答
反对 回复 2023-09-20
?
慕斯王

TA贡献1864条经验 获得超2个赞

您可以做的最简单的事情就是捕获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");

            }

        }

    }

}


查看完整回答
反对 回复 2023-09-20
  • 3 回答
  • 0 关注
  • 101 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信