在无效输入后继续循环的程序?

Program that continues loop after invalid input?

我正在尝试创建一个程序,要求用户输入指数,然后取指数并执行运算 (e^exponent)。如果用户输入的值不是双精度值,程序会打印“无效输入。”,并继续要求指数。但是,我无法使此代码正常工作,当我在调试器中键入非双精度时,它会无限打印“输入指数:无效输入”。

importjava.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;
        result = Math.exp(exponent);
        String x;
        x = "Result = " + String.format("%.4f", result);
        System.out.print(x);
        System.out.print('\n');
        System.out.println();
     }
     else {
        System.out.println("Invalid input.");
     }
  }while (true);

当您到达 else 子句时,扫描器捕获的输入不会被重置。在打印 « Invalid Input » 之前添加 s.next(); 应该可以解决您的问题。