You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

输入无效后如何让程序继续循环?Java e^指数运算输入校验问题

问题根因

当输入非double类型的内容时,Scanner的hasNextDouble()检测到内容不符合要求返回false,但此时非法输入仍然滞留在输入缓冲区中没有被清理,下一次循环执行判断时仍然会读取到同一段非法内容,因此会无限触发错误提示分支。

修复后完整代码

import java.util.Scanner;
class loops{
   public static void main(String[] args) {
      double exponent;
      Scanner s = new Scanner(System.in);
      do {
         System.out.print("Enter exponent: ");
         if(s.hasNextDouble()){
            exponent = s.nextDouble();
            double result = Math.exp(exponent);
            System.out.println("Result = " + String.format("%.4f", result));
            System.out.println();
         }
         else {
            System.out.println("Invalid input.");
            // 消费缓冲区中的非法输入,避免无限循环
            s.next();
         }
      }while (true);
   }
}

内容的提问来源于stack exchange,提问作者Preston Bearden

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 08:51:00