Problems with Java Scanner

Asked

Viewed 123 times

0

I’m having trouble compiling a basic reading program written in java, when I compile it gives continuity errors in the console.

package programa_leitura;

import java.util.Random;
import java.util.Scanner;

public class Main {
    
    public static void main(String[]args) {
        
        Scanner in = new Scanner(System.in);
        String nome;
        Random rand = new Random();
        System.out.println("Como gostaria de ser chamado?");
        nome = in.nextLine();
        System.out.println("Seja bem vindo(a) "+nome);
        System.out.println("Para onde deseja ir? (w/a/s/d)");
        String comando = in.nextLine();
        String yn = in.nextLine();
        if(comando.equals("w")){//direção W
            System.out.println("Você anda alguns metros em direção norte...");
            System.out.println("Você se depara com uma espada meio enferrujada, deseja pega-la? (y/n)");
            if (yn.equals ("y")){
                System.out.println("Você obteve 'espada enferrujada'!");
                System.out.println("[O\\\\\\\\\\[========================-");}
            else if(yn.equals("n")) {
                System.out.println("Você passa reto pela espada enferrujada");}
            else {
                System.out.println("Comando não reconhecido, digite novamente");
                if (yn.equals("y")) {
                    System.out.println("Você obteve 'espada enferrujada'!");
                    System.out.println("[O\\\\\\\\\\[========================-");}
                else if(yn.equals("n")) {
                    System.out.println("Você passa reto pela espada enferrujada");}
                }
        }
        else if(comando.equals("a")){//direção A
            System.out.println("Você anda alguns metros em direção oeste e chega em um bosque ...");
            System.out.println("Quer continuar? (y/n)");
            if (yn.equals("y")){
                System.out.println("Você encontra as ruínas de algo que parece ser uma aldeia...");
                System.out.println("Você encontra uma casa quase que em perfeito estado");
                System.out.println("Deseja entrar? (y/n)");
                if(yn.equals("y")){
                    System.out.println("");}

            else {
                System.out.println("Você acha melhor para por ai e volta para casa.");
                System.out.println("Obrigado por jogar!");}
            }
        }
    }
}

erro parte 1 So far so good erro parte 2 Here it is necessary to press enter twice to continue erro parte 3 The latter two were to be divided, but for some reason this is not what happens.

1 answer

1

This is because you made two calls in a row from nextLine:

String comando = in.nextLine();
String yn = in.nextLine();

Every time you call nextLine, the program is waiting for you to type something to proceed. So first you type the command, and then it waits for you to type something else (and this is done before the next ones println).

To correct, remove this second call from nextLine, and put it in the right places (right after the respective messages, which is when you actually need to read something):

Scanner in = new Scanner(System.in);
Random rand = new Random();
System.out.println("Como gostaria de ser chamado?");
String nome = in.nextLine();
System.out.println("Seja bem vindo(a) " + nome);
System.out.println("Para onde deseja ir? (w/a/s/d)");
String comando = in.nextLine();
String yn = "";
if (comando.equals("w")) {// direção W
    System.out.println("Você anda alguns metros em direção norte...");
    System.out.println("Você se depara com uma espada meio enferrujada, deseja pega-la? (y/n)");
    yn = in.nextLine(); // <---------- AQUI
    if (yn.equals("y")) {
        System.out.println("Você obteve 'espada enferrujada'!");
        System.out.println("[O\\\\\\\\\\[========================-");
    } else if (yn.equals("n")) {
        System.out.println("Você passa reto pela espada enferrujada");
    } else {
        System.out.println("Comando não reconhecido, digite novamente");
        yn = in.nextLine(); // <---------- AQUI TAMBÉM
        if (yn.equals("y")) {
            System.out.println("Você obteve 'espada enferrujada'!");
            System.out.println("[O\\\\\\\\\\[========================-");
        } else if (yn.equals("n")) {
            System.out.println("Você passa reto pela espada enferrujada");
        }
    }
} else if (comando.equals("a")) {// direção A
    System.out.println("Você anda alguns metros em direção oeste e chega em um bosque ...");
    System.out.println("Quer continuar? (y/n)");
    yn = in.nextLine(); // <---------- AQUI TAMBÉM
    if (yn.equals("y")) {
        System.out.println("Você encontra as ruínas de algo que parece ser uma aldeia...");
        System.out.println("Você encontra uma casa quase que em perfeito estado");
        System.out.println("Deseja entrar? (y/n)");
        yn = in.nextLine(); // <---------- E AQUI TAMBÉM
        if (yn.equals("y")) {
            System.out.println("");
        } else {
            System.out.println("Você acha melhor para por ai e volta para casa.");
            System.out.println("Obrigado por jogar!");
        }
    }
}

Browser other questions tagged

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