java - 我的代码无限循环并且不再提示用户

标签 java exception boolean do-while

boolean acceptPcode=true;
boolean acceptQty=false;
int Qty=0;
List<Integer> purchasedProdQty=new ArrayList<>();

while(acceptPcode==true && acceptQty==false){
        do{
            try{
                 System.out.print("Enter Qty: ");
                    Qty=sc.nextInt();
                    acceptQty=true;                 
              }catch(InputMismatchException ime){
                    System.out.println("Invalid quantity please enter a number!");
                    acceptQty=false;
              }

                    if(acceptQty==true)
                    purchaseProdQty.add(Qty);

           }while(acceptQty==false);

} 

我的问题是,当我输入一个字母时,它会进入无限循环,并且不会提示用户输入数量......这是

输入数量:数量无效,请输入数字!

输入数量:数量无效,请输入数字!

输入数量:数量无效,请输入数字!......

最佳答案

您忘记读取下一行的 \n(或 \r\n)字符。在当前代码中,扫描器正在等待 int 输入,但当前的下一个输入是此换行符。只需在代码中添加 sc.nextLine() 即可使用换行符:

Qty=sc.nextInt();
sc.nextLine();
acceptQty=true;

关于java - 我的代码无限循环并且不再提示用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21631760/

相关文章:

Java do/while 循环抵消前两个问题

java - Android查看performClick()和callOnClick()的区别

java - OpenJDK 8 (1.8.0_232) 和某些 HTTPS 连接是否存在导致 HTTP 错误 403 的已知问题?

Java:URL 编码为 JSON/Map&Lists

c++ - VS2012 在 64 位目标中 vector <bool> 的性能不佳

python - 如何识别 boolean 数组中的值序列?

java - Java 方法可以返回 Enum 类型吗?

java - 检查finally中是否执行了try或执行了catch

c++ - 为什么在使用 boost::copy_exception 时会丢失类型信息?

java - 在 Spring Boot 中处理异常的最佳方法是什么?