2017-09-21 16 views
1

入力がゼロより大きい倍数であるかどうかをチェックするメソッドを作成しようとしています。入るとき、それは負以前メソッドは負の値を返します

public static double isValid(double v){ 
    Scanner scan = new Scanner(System.in); 
    if (scan.hasNextDouble()){ 
    v = scan.nextDouble(); 
    if (v<=0) { 
     System.out.println("You have to use a positive number"); 
     isValid(v); 
    } 
    else { 
     return v; 
    } 
    } 
    else { 
    System.out.println("Thats not how it works"); 
    isValid(v); 
    } 
    return v; 
} 

答えて

2

に入っ返し正の値を入力した後、最終的には、値を再入力するにもかかわらず、そのプロンプトをネガそれは確かに私のコードで正常に動作している二重であるかどうかの確認が、あなたは再帰呼び出しの結果を返す必要があります。

return isValid(v); 

再帰呼び出しから戻った後、実行はvを返す、法の下での復帰まで続けるので、それは最後の無効な値を返します。この時点で、vは最後の無効な値です。

+0

また、実際に再帰する必要はありません –

+0

@KevinAnderson Trueですが、それは当面の問題ではありません。これがコードレビューであれば、もう少し詳しく調べることができます。 – Carcigenicate

+0

@KevinAndersonなぜですか? –

関連する問題