输入无效后如何让程序继续循环?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
相关产品推荐
相关产品推荐

