2016-09-29 14 views
-7

私はこのプログラムを書いていますが、なんらかの理由で私の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"); 

    } 
} 
+0

有効かどうかを確認する前に解析しようとしています。 – khelwood

+0

簡単な修正はtryとcatchでラップし、キャッチ出力では無効な入力です! – ApolloSoftware

答えて

2

問題はここにある:

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

numがある場合」 e "を入力するとNumberFormatExceptionが表示されます。

かを確認、または試してください/その例外をキャッチするために、Scanner.hasNextDouble{}を使用することができます。

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

あなたはそれを解析前に、妥当性をチェックする必要があります。文があるため、この行のため、到達した場合

0

あなたのコードは前NumberFormatExceptionを投げています。

関連する問題