2016-09-27 5 views
0

このコードに問題があり、問題を理解できない場合は論理的なエラーだとわかっていますが、わかりませんが、結果はすべて0になります。Java負の数値を0に変換する

コード:

import java.util.Scanner; 

public class ConvertNegative { 
    public static void main (String [] args) { 
     int userNum = 0; 

     if (userNum >= 0) 
     System.out.println("Non-negative"); 
     else 
     System.out.println("Negative; converting to 0"); 
     userNum = 0; 
     System.out.format("Final: %d", userNum); 
     System.out.println(""); 

     return; 
    } 
} 

私は任意のヘルプ、おかげでいただければと思います。

+5

うん、あなたはそれがゼロのままもちろん0にuserNumを設定することにより開始 – 3kings

+3

任意のブラケットを持っていないのに役立ちます。あなたはどこから入力を得ることになっていますか? – clay

答えて

5

複数の回線条件/ forループがある場合は、角かっこを設定する必要があります。括弧がなければ、elseブロックは最初の文を実行します。あなたの場合はSystem.out.println("Negative; converting to 0");です。 いずれの場合でも、変数userNameは、次の行がもうelseブロックの一部ではないため、0に設定されます。 1行以上は角かっこです。

public class ConvertNegative { 
    public static void main (String [] args) { 
     int userNum = 0; 

     if (userNum >= 0) 
      System.out.println("Non-negative"); 
     else{ 
      System.out.println("Negative; converting to 0"); 
      userNum = 0; 
      System.out.format("Final: %d", userNum); 
      System.out.println(""); 
     } 
     //return; -> There is no need for the return as the main method has no return value. 
    } 
} 
0

elseブロックに中括弧が欠けています。あなたのelseが複数のステートメントを持っている場合、中括弧を付ける必要があります。あなたはユーザーから価値を得られませんでした。主な方法は無効なので、return文は必要ありません。

希望次のコードは、

import java.util.Scanner; 

public class ConvertNegative { 
    public static void main (String [] args) { 
     Scanner s = new Scanner(System.in); 
     System.out.print("Enter a number...."); 
     int userNum = s.nextInt(); 

     if (userNum >= 0) 
     System.out.println("Non-negative"); 
     else{ 
     System.out.println("Negative; converting to 0"); 
     userNum = 0; 
     System.out.format("Final: %d", userNum); 
     System.out.println(""); 
     } 
    } 
} 
関連する問題