程序无法正常运行

时间:2016-09-29 19:36:15

标签: java if-statement crash

所以我写了这个程序,但由于某种原因我的其他声明不起作用。 如果我输入" 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");

  }
}

2 个答案:

答案 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));

您需要在解析之前检查有效性