1
resposta

Meu código compila, mas não do jeito que eu queria [Java]

Olá, eu tô quebrando a cuca neste código.

package src;

import java.util.Scanner;

public class Exercicio14Main {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String resposta;
        System.out.println("Bem-vindo/a! Você irá digitar letras, palavras ou frases e este programa irá imprimir ao contrário.");

        while (true) {
            resposta = scan.nextLine();
            for (String part : resposta.split(" ")) {
                System.out.print(new StringBuilder(part).reverse().toString());
                System.out.print(" ");
            }

            System.out.println();
            System.out.println("Digite 0 para encerrar o programa ou 1 para reiniciar:");
            if (resposta.equals("0")) {
                break;
            } 
        }
    }
}

Ao digitar uma frase, como 'Gato Samuel' (meu gato), ele imprime o seguinte:

Bem-vindo/a! Você irá digitar letras, palavras ou frases e este programa irá imprimir ao contrário. Gato Samuel otaG leumaS Digite 0 para encerrar o programa ou 1 para reiniciar:

Aí funciona. Mas quero digitar 0 para encerrar e 1 para reiniciar. Ao digitar 1, entra num loop infinito de continuar digitando "1". Ao digitar "0", ele repete o sysout mais uma vez, o que não deveria acontecer, e então encerra o programa.

*Digite 0 para encerrar o programa ou 1 para reiniciar: 0 0 Digite 0 para encerrar o programa ou 1 para reiniciar:

Process finished with exit code 0*

Eu quero resolver duas coisas: 1 - um return que ao digitar '1' ele repete o menu de inversão de strings; 2 - ao digitar 0, ele break o código, então parando de rodar.

Muito obrigado!

1 resposta

Fiz algumas adaptações no seu código e funcionou como você descreveu:

package src;

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String resposta;

        boolean bool = true;
        while (bool) {
            System.out.println("Bem-vindo/a! Você irá digitar letras, palavras ou frases e este programa irá imprimir ao contrário.");
            resposta = scan.nextLine();
            for (String part : resposta.split(" ")) {
                System.out.print(new StringBuilder(part).reverse().toString());
                System.out.print(" ");
            }

            System.out.println();
            System.out.println("Digite 0 para encerrar o programa ou 1 para reiniciar:");
            resposta = scan.nextLine();
            if (resposta.equals("0")) {
                bool = false;
            }else{
                continue;
            }
        }
    }
}

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software