Exercise with ongoing scanner, does not perform correctly

Asked

Viewed 36 times

-3

I’m studying in a game development course using Java, in one of the classes is proposed an exercise using scanner,but when trying to execute the code does not execute correctly.
the code in question this below, the part that does not perform correctly is after ''you wish to advance to which direction''. when executed, even pressing w, does not appear " you are going forward". When I change the part if(comando == "w") for if (comando != "w") he performs this part correctly but not the others.
Could anyone help find the error please? Note: use eclipse program.

 Scanner in = new Scanner(System.in);
    String nome;
    Random rand = new Random();
/*rand.nextInt(100);*/
    System.out.println("Seja bem-vindo ao jogo, Diga o seu nome: ");
    nome = in.nextLine();
    System.out.println("Seja muito bem-vindo(a) " + nome );
    System.out.println("Você deseja avançar para qual direção? w , s , a ,d ");
    String comando = in.nextLine();
    if (comando == "w") {
        System.out.println("Você está indo para frente! ");
        System.out.println("Um inimigo apareceu, o que deseja fazer? (a=atacar, c=correr ?");
        comando = in.nextLine();
        if (comando =="a") {
            if(rand.nextInt(100) < 75) {
                System.out.println("Você ganhou o jogo! "); 
            } else { System.out.println("você perdeu o jogo ");
            
            }
        }else { System.out.println("Você fugiu!, o jogo terminou");
        } 
        }else if (comando =="s") { 
            System.out.println("Você tem certeza que deseja voltar? ");
        }
    }

2 answers

-1


In Java, == represents comparison by identity (if two variables point to the same object in memory), and .equals() represents comparison by equality (if two variables point to two objects with equal properties). In this case, you want to use the comparison for equality, replacing

if (comando == "w")

for

if (comando.equals("w"))

-2

As I look at it, I suggest a few attempts:

  1. You have one more closing keys between those if and Else, as we can see below:
     if (comando == "w") {
        System.out.println("Você está indo para frente! ");
        System.out.println("Um inimigo apareceu, o que deseja fazer? (a=atacar, c=correr ?");
        comando = in.nextLine();
        if (comando =="a") {
            if(rand.nextInt(100) < 75) {
                System.out.println("Você ganhou o jogo! "); 
            } else { System.out.println("você perdeu o jogo ");
            
            }
        }else { System.out.println("Você fugiu!, o jogo terminou");
        } 
        }else if (comando =="s") { 
            System.out.println("Você tem certeza que deseja voltar? ");
        }
    } 

The ideal to correct, I noticed, is to erase the last keys and idente again the code, maybe it came unintentionally in the code too, and in fact it is the keys of the method and not the condition, but I think it should warn anyway. 2. When comparing objects, which is the case for String ideal is to use equals, == does not work in these cases, so the code would look something like this:

if (comando.equals("w")) {
    System.out.println("Você está indo para frente! ");
    System.out.println("Um inimigo apareceu, o que deseja fazer? (a=atacar, c=correr ?");
    comando = in.nextLine();
    if (comando.equals("a")) {
        if (rand.nextInt(100) < 75) {
            System.out.println("Você ganhou o jogo! ");
        } else {
            System.out.println("você perdeu o jogo ");
        }
    } else {
        System.out.println("Você fugiu!, o jogo terminou");
    }
} else if (comando.equals("s")) {
    System.out.println("Você tem certeza que deseja voltar? ");
}
  1. Last but not least don’t forget to close the scanner at the end of the operation: in.close();

Browser other questions tagged

You are not signed in. Login or sign up in order to post.