2016-09-27 45 views
0

我有問題,與此代碼,想不通的問題,我知道這是一個邏輯上的錯誤,但我似乎無法弄清楚,所有的結果最終爲0Java的轉換負數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

是的,你沒有 – 3kings

+3

您可以通過userNum設置爲0。當然它保持零啓動任何括號。你應該從哪裏得到輸入? – clay

回答

5

如果你有多個線路條件/ for循環需要設置支架。如果沒有括號,你的else塊就會執行它後面的第一條語句。在你的情況下,System.out.println("Negative; converting to 0");。 在任何情況下,您的變量userName將設置爲0,因爲下面的行不再是else塊的一部分。 多於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

您已經錯過了其他區塊的大括號。當其他人有多個陳述時,你必須給大括號。你也沒有從用戶那裏得到價值。由於主要方法是無效的,所以不需要返回語句。

希望下面的代碼將幫助您

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