如何使代码打印暂停而不是获胜
how to make code print Suspended instead of won
代码不输出 Suspended 但在用户输入 true 时输出 Won。有人可以帮忙解释一下这段代码我做错了什么吗?
public class Main {
public static void main(String[] args) {
Scanner read = new Scanner(System.in);
boolean isSuspended = read.nextBoolean();
int ourScore = read.nextInt();
int theirScore = read.nextInt();
if(isSuspended = true){
if(ourScore > theirScore){
System.out.println("Won");
} if(ourScore < theirScore){
System.out.println("Lost");
} if(ourScore == theirScore){
System.out.println("Draw");
}
} else {
System.out.println("Suspended");
}
}
}
您使用 =
不正确。在您的示例中,if(isSuspended = true) {}
表示:
boolean isSuspended = read.nextBoolean();
//...
isSuspended = true;
if(isSuspended) {} // it will be always true
要未分配但检查,您应该使用==
代替。
if (isSuspended == true) {
// if true
} else {
// if false
}
或更好:
if (isSuspended) {
// if true
} else {
// if false
}
P.S. 我想你也混淆了 if 的情况。
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
boolean suspended = scan.nextBoolean();
int ourScore = scan.nextInt();
int theirScore = scan.nextInt();
if (suspended)
System.out.println("Suspended");
else if (ourScore > theirScore)
System.out.println("Won");
else if (ourScore < theirScore)
System.out.println("Lost");
else
System.out.println("Draw");
}
问题出在以下行:
if(isSuspended = true) {
应该是
if(isSuspended == true) {
甚至:
if(isSuspended) {
isSuspended = true
(有一个 =
)为变量 isSuspended
分配一个新值,覆盖用户输入的任何内容。
在 Java 中,这些赋值被视为一个值:isSuspended = true
的值为 true
(因此您可以在任何地方放置布尔值,如 true
或 false
,你也可以输入像 yourVariableName = true
或 myVariable = false
这样的表达式,它们的行为也像布尔值,但具有为变量赋值的“副作用”。
如果要比较一个值是否相等,则需要使用 ==
(或 .equals(...)
用于字符串和其他对象)。如果你想检查一个布尔值是否为 true
,你甚至不需要 == true
,因为该比较的值最终将是 true
或 false
,这正是您要比较的布尔值最初的值。
代码不输出 Suspended 但在用户输入 true 时输出 Won。有人可以帮忙解释一下这段代码我做错了什么吗?
public class Main {
public static void main(String[] args) {
Scanner read = new Scanner(System.in);
boolean isSuspended = read.nextBoolean();
int ourScore = read.nextInt();
int theirScore = read.nextInt();
if(isSuspended = true){
if(ourScore > theirScore){
System.out.println("Won");
} if(ourScore < theirScore){
System.out.println("Lost");
} if(ourScore == theirScore){
System.out.println("Draw");
}
} else {
System.out.println("Suspended");
}
}
}
您使用 =
不正确。在您的示例中,if(isSuspended = true) {}
表示:
boolean isSuspended = read.nextBoolean();
//...
isSuspended = true;
if(isSuspended) {} // it will be always true
要未分配但检查,您应该使用==
代替。
if (isSuspended == true) {
// if true
} else {
// if false
}
或更好:
if (isSuspended) {
// if true
} else {
// if false
}
P.S. 我想你也混淆了 if 的情况。
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
boolean suspended = scan.nextBoolean();
int ourScore = scan.nextInt();
int theirScore = scan.nextInt();
if (suspended)
System.out.println("Suspended");
else if (ourScore > theirScore)
System.out.println("Won");
else if (ourScore < theirScore)
System.out.println("Lost");
else
System.out.println("Draw");
}
问题出在以下行:
if(isSuspended = true) {
应该是
if(isSuspended == true) {
甚至:
if(isSuspended) {
isSuspended = true
(有一个 =
)为变量 isSuspended
分配一个新值,覆盖用户输入的任何内容。
在 Java 中,这些赋值被视为一个值:isSuspended = true
的值为 true
(因此您可以在任何地方放置布尔值,如 true
或 false
,你也可以输入像 yourVariableName = true
或 myVariable = false
这样的表达式,它们的行为也像布尔值,但具有为变量赋值的“副作用”。
如果要比较一个值是否相等,则需要使用 ==
(或 .equals(...)
用于字符串和其他对象)。如果你想检查一个布尔值是否为 true
,你甚至不需要 == true
,因为该比较的值最终将是 true
或 false
,这正是您要比较的布尔值最初的值。