如何使代码打印暂停而不是获胜

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(因此您可以在任何地方放置布尔值,如 truefalse,你也可以输入像 yourVariableName = truemyVariable = false 这样的表达式,它们的行为也像布尔值,但具有为变量赋值的“副作用”。

如果要比较一个值是否相等,则需要使用 ==(或 .equals(...) 用于字符串和其他对象)。如果你想检查一个布尔值是否为 true,你甚至不需要 == true,因为该比较的值最终将是 truefalse,这正是您要比较的布尔值最初的值。