Java 将负数转换为 0

Java Convert negative numbers to 0

我在使用这段代码时遇到问题,无法弄清楚问题所在,我知道这是一个逻辑错误,但我似乎无法弄清楚,所有结果最终都是 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;
   }
}

非常感谢任何帮助,谢谢。

如果您有多行条件/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.
    }
}

您在 else 块中遗漏了大括号。当你的 else 有多个语句时,你必须给出大括号。你也没有从用户那里得到价值。由于 main 方法是无效的,因此不需要 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(""); 
      }
   }
}

美源于简单。

像这样在一行中简单地清理 userNum 变量,您将获得更好的代码....

class Main {
  public static void main(String[] args) {
    int userNum = -5;

    userNum = Math.max(userNum, 0);

    System.out.println("userNum = " + userNum);
  }
}

关键是使用Math.max()函数来完成这项工作。

你可以 运行 在我的 REPL 上 https://repl.it/repls/WildBountifulTriangles

您需要通过添加正确的大括号并将 else 与底部打印命令分开来重新编写代码。

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