有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

尽管有终止表达式,java循环仍不会结束

你好Stack overflow社区

我的提示是: **“您将进行错误检查,以确保输入的小时在[0,23]范围内。请继续询问用户,直到用户输入的时间在有效范围内。”

当我的程序有正确的整数输入(任何整数输入)时,它将正常工作。然而,如果我输入一个非整数,那么所有的东西都卡在一个无限循环中

我做错了什么

   import java.util.*;
public class Tester2 {
    int a; // any valid int number

public void loop() 
{
    Scanner sc = new Scanner(System.in);
    int x=0; // terminating int
    while(x==0) 
    {
        System.out.println("Enter 0-23: ");


            try
            {
                if(sc.hasNextInt()) 
                {
                    a=sc.nextInt();
                    if((a>=0&&a<=23)) 
                    {
                        System.out.println("Success! ");
                        x=1;
                    }
                    else 
                    {
                        System.out.println("Retry! ");
                        a=0;
                        x=0;
                    }
                }
            }
            catch (NumberFormatException ex) 
            {
                System.out.println("invalid input");
            }

        }

}

}

共 (1) 个答案

  1. # 1 楼答案

    如果要读取的下一个元素不是有效的整数,sc.hasNextInt()将返回false。但是,在这种情况下,代码中的任何一点都不会读取该元素

    sc.hasNextInt()为false时,您应该确保读取并丢弃该元素(在else块中添加sc.next()就可以了)