/ / Program nie będzie działał poprawnie [closed] - java, if-statement, crash

Program nie działa poprawnie [closed] - java, if-statement, crash

Napisałem ten program, ale z jakiegoś powodu mójW przeciwnym razie wygrałoby "t pracy. Jeśli wpiszesz "e", na przykład mój program po prostu się zawiesza ... kiedy faktycznie ma zwrócić "Nieprawidłowe dane wejściowe" Czy ktoś może mi pomóc?

================================================== =======================

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");

}
}

Odpowiedzi:

2 dla odpowiedzi № 1

problem jest tutaj:

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

jeśli num to "e", otrzymasz a NumberFormatException.

Możesz użyć Scanner.hasNextDouble{}, aby sprawdzić lub spróbować / złapać ten wyjątek.


0 dla odpowiedzi nr 2

Twój kod rzuca NumberFormatException przed Instrukcja if została osiągnięta z powodu tego wiersza:

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

Musisz sprawdzić ważność przed analizowanie go.