2016-09-27 43 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(""); 
     } 
    } 
}