当前位置: 首页 > 面试题库 >

Java如何使用Scanner只接受有效的int作为输入

郗亦
2023-03-14
问题内容

我正在尝试使小型程序更强大,而我需要一些帮助。

Scanner kb = new Scanner(System.in);
int num1;
int num2 = 0;

System.out.print("Enter number 1: ");
num1 = kb.nextInt();

while(num2 < num1) {
    System.out.print("Enter number 2: ");
    num2 = kb.nextInt();
}

2号必须大于1

我也希望程序自动检查并忽略用户是否输入字符而不是数字。因为现在,当用户输入例如数字r而不是数字时,程序将退出。


问题答案:

用途Scanner.hasNextInt()

返回true是否可以int使用nextInt()方法将此扫描器输入中的下一个标记解释为默认基数中的值。扫描仪不会越过任何输入。

这是一个片段说明:

Scanner sc = new Scanner(System.in);
System.out.print("Enter number 1: ");
while (!sc.hasNextInt()) sc.next();
int num1 = sc.nextInt();
int num2;
System.out.print("Enter number 2: ");
do {
    while (!sc.hasNextInt()) sc.next();
    num2 = sc.nextInt();
} while (num2 < num1);
System.out.println(num1 + " " + num2);

你不必parseInt或不必担心NumberFormatException。请注意,由于这些hasNextXXX方法不会超越任何输入,因此,next()如果你想跳过“垃圾”,则可能必须调用,如上所示。



 类似资料:
  • 此外,我希望程序自动检查和忽略,如果用户输入一个字符,而不是一个数字。因为现在,当用户输入而不是数字时,程序就会退出。

  • 我尝试为一门Java课程编写一个小型解析器:解析器使用Scanner类: 文件1: 我用下面的三个小输入文件对其进行了测试: 出现异常的原因是您在使用扫描器一次之后调用keyin.close(),这不仅关闭了扫描器,还关闭了System.in。在下一次迭代中,您创建了一个新的扫描器,由于System.In现在关闭了,该扫描器很快就会崩溃。要解决这个问题,您应该做的是在进入while循环之前只创建一

  • 我是JAVA的新手,文本字段是否可以只接受数字输入?是否也有可能在代码内部有一个等式?例如:(毛额*10) 下面是我希望有数值输入的代码://Display private class Handler implements ActionListener{public void actionPerformed(ActionEvent e){

  • 问题内容: 我遇到的问题是PrimesFaces 3.4.1日历。当使用通过按钮或在输入字段焦点上激活的弹出日期选择器时,您只能选择有效的日期,该日期很好,很开心! 当您在输入字段中手动添加日期时,就会出现问题,如果您添加了无效日期,PrimeFaces日历组件会尽最大的努力将其转换为有效日期然后发送,这意味着后端验证是不可行的。以下是一些有趣的翻译: 30/02/2012变成2/6/2014 3

  • 我用了<代码> 现在我想通过只接受来限制这一点。pdf和。xls文件。 当我单击submit按钮时,它应该会验证这一点。 当我点击网页上的文件(PDF/XLS)时,它会自动打开。 有人能举一些例子吗?

  • 问题内容: 我试图将联系人保存在表中,但filechosser始终将其设置为所有文件。有没有办法我可以将其设置为仅接受.txt并将其设置为默认值或唯一选项。 问题答案: 您需要添加一个过滤器: