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