Java 程序无法正常运行

Java 程序无法正常运行,java,if-statement,crash,Java,If Statement,Crash,所以我写了这个程序,但由于某种原因,我的else语句不起作用。 例如,如果我输入e,我的程序就会崩溃。。。当它实际应该返回无效输入时 有人能帮我吗 ========================================================================= import java.util.Scanner; public class AbsValue2 { public static void main(String[] args) { Scan

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

  }
}
问题在于:

Double num2 = new Double(Double.parseDouble(num));
如果num是e,那么您将获得NumberFormatException

您可以使用Scanner.hasNextDouble{}来检查或尝试/捕获该异常。

您的代码在到达if语句之前抛出NumberFormatException,因为这一行:

Double num2 = new Double(Double.parseDouble(num));

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

您正在尝试在检查其是否有效之前对其进行解析。简单的解决方法是在try-and-catch中包装,并在catch输出中包装无效的输入!