Skip to content
Advertisement

how to make code print Suspended instead of won

Code doesn’t output Suspended but outputs Won when the user inputs true. Can someone help explain what have I done wrong with this code, please?

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");
        }
   }
}

Advertisement

Answer

You use = incorrectly. In your example, if(isSuspended = true) {} means:

boolean isSuspended = read.nextBoolean();
//...
isSuspended = true;

if(isSuspended) {} // it will be always true

To not assigned but check, you should use == instead.

if (isSuspended == true) {
   // if true
} else {
   // if false
}

or better:

if (isSuspended) {
   // if true
} else {
   // if false
}

P.S. I think you also mixed up the if cases.

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");
}

User contributions licensed under: CC BY-SA
2 People found this is helpful
Advertisement