Java 程序无法正常运行
所以我写了这个程序,但由于某种原因,我的else语句不起作用。 例如,如果我输入e,我的程序就会崩溃。。。当它实际应该返回无效输入时 有人能帮我吗 =========================================================================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
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输出中包装无效的输入!