如何使用Scanner检查用户输入是否为整数?

时间:2018-02-04 17:09:52

标签: java input integer java.util.scanner

我希望国家/地区代码是用户输入的整数。我希望当用户输入不是整数的代码时显示错误消息。我怎样才能做到这一点?该程序是要求用户输入国家名称和国家代码。在哪个用户将输入国家代码。但是如果用户输入了一个字符,我想要显示一条消息,说明输入无效。

System.out.println("Enter country name:");                     
countryName = in.nextLine();
System.out.println("Enter country code:");            
int codeNumber = in.nextInt(); 
in.nextLine();

5 个答案:

答案 0 :(得分:1)

如果输入不是int值,那么Scanner的{​​{1}}(查看here for API)方法会抛出InputMismatchException,您可以nextInt()然后再请用户重新输入“国家/地区代码”,如下所示:

catch

答案 1 :(得分:0)

这样做的一个简单方法是,使用名称读取数字行,然后检查Regex(正则表达式)以查看是否仅包含数字,匹配方法为字符串{{1如果为false,则返回布尔值,然后它不是数字,您可以打印错误消息。

codeNumber.matches("\\d+")

答案 2 :(得分:0)

您可以改为 Scanner in = new Scanner(System.in); boolean isNumeric = false;//This will be set to true when numeric val entered while(!isNumeric) try { System.out.println("Enter country code:"); int codeNumber = in.nextInt(); in.nextLine(); isNumeric = true;//numeric value entered, so break the while loop System.out.println("codeNumber ::"+codeNumber); } catch(InputMismatchException ime) { //Display Error message System.out.println("Invalid character found, Please enter numeric values only !!"); in.nextLine();//Advance the scanner } ,然后致电hasNextInt

nextInt

答案 3 :(得分:0)

您可以这样做,首先将输入作为字符串,然后尝试将字符串转换为整数,然后输出错误消息,如果它可以&#t; t:

<section class="slice">
<div class="wp-section">

    <div class="container">
        <div class="row pics_in_a_row">
            @{
                int i = 0;

                foreach (dbphoto.Models.Image s in Model.images.OrderByDescending(x => x.idimage))
                {
                    if (i % 5 == 0 && i != 0)
                    {
                        <br />
                    }
                    i++;

                    if (1 == 1)
                    {
                        <div class="flxbox" style="flex: calc(1024/713)">
                            <a href="@s.HighResolution" data-fancybox="gallery" data-caption="xyz, Stockholm">
                                <img src="@s.LowResolution" class="img-fluid rounded flximg" />
                            </a>
                        </div>
                    }

                }
            }
            </div>
        </div>
    </div>
 </section>

答案 4 :(得分:0)

如果要创建自己的自定义异常类,请使用regex检查输入字符串是否为整数。

private final String regex = "[0-9]";

然后,检查输入是否遵循正则表达式模式。

if (codeNumber.matches(regex)) {
    // do stuff.
} else {
    throw new InputMismatchException(codeNumber);
}

如果不创建自定义异常处理程序,则可以在InputMismatchException中使用build。