Java将负数转换为0

Ara*_*mza 1 java converter zero negative-number

我遇到了这段代码的问题并且无法弄清楚问题,我知道这是一个逻辑错误,但我似乎无法弄明白,所有结果最终都为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;
   }
}
Run Code Online (Sandbox Code Playgroud)

我很感激任何帮助,谢谢.

And*_*net 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.
    }
}
Run Code Online (Sandbox Code Playgroud)


asi*_*iby 5

美源于简单。

userNum只需像这样清理一行中的变量,您将获得更好的代码......

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

    userNum = Math.max(userNum, 0);

    System.out.println("userNum = " + userNum);
  }
}
Run Code Online (Sandbox Code Playgroud)

关键是使用该Math.max()功能来完成工作。

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