所以我写了这个程序,但由于某种原因我的其他声明不起作用。 如果我输入" e"例如,我的程序将崩溃...当它实际上应该返回"无效的输入" 有人可以帮助我吗?
=============================================== ==========================
import java.util.Scanner;
public class AbsValue2 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Enter a number:");
String num = input.nextLine();
Double num2 = new Double(Double.parseDouble(num));
Double abs_val = new Double(Math.sqrt(num2 * num2));
if (num.matches("[+-]?[\\d]+[.]*"))
System.out.println("The absolute value of " + num + " is |" + abs_val + "|");
else if (num.matches("[+-]?[\\d]*.[\\d]+"))
System.out.println("The absolute value of " + num + " is |" + abs_val + "|");
else
System.out.println("Invalid input");
}
}
答案 0 :(得分:2)
问题在于:
Double num2 = new Double(Double.parseDouble(num));
如果num是" e",那么你将获得NumberFormatException
。
您可以使用Scanner.hasNextDouble{}
来检查或尝试/捕获该异常。
答案 1 :(得分:0)
您的代码在到达if语句之前抛出NumberFormatException
,因为这行:
Double num2 = new Double(Double.parseDouble(num));
您需要在解析之前检查有效性。