Stop loop with typed text

Asked

Viewed 45 times

-3

Hello, I’m new to programming and would like to know if I can stop this loop when the user type "Quit" in the dialog box "Enter your name".

public class PeriodoDeVacinacao {
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        String nome = null;
        int idade;

        while(nome != "Sair") {
            nome = JOptionPane.showInputDialog("Digite o seu nome: ");
            idade = Integer.parseInt(JOptionPane.showInputDialog("Digite a sua idade: "));
    
            if (idade >= 60 && idade <= 69) {
                JOptionPane.showMessageDialog(null, nome + ", você deverá tomar sua vacina em: ABRIL!");
            } else if (idade >= 50 && idade <= 59) {
                JOptionPane.showMessageDialog(null, nome + ", você deverá tomar sua vacina em: MAIO!");
            } else if (idade >= 40 && idade <= 49) {
                JOptionPane.showMessageDialog(null, nome + ", você deverá tomar sua vacina em: JUNHO!");
            } else if (idade <= 39) {
                JOptionPane.showMessageDialog(null, nome + ", você deverá tomar sua vacina em: JULHO!");
            } else if (idade >= 70) {
                JOptionPane.showMessageDialog(null, nome + ", você já pode tomar sua vacina!");
            }
        }
    }
}

1 answer

-1


Good morning/Good night Maria... come on!

The String type is not recognized as primitive as the int, Boolean, double, char... everything that starts in Pascalcase in Java is a class, so "we can" consider as an object...

In order to compare objects, we need to use the equals() method that is present in all classes, as it is inherited from the parent class, Object! let’s solution:.

como você inicializa a variável nome com null, não temos como comparar ela dentro do while com o equals(), então precisamos trocar isso, logo também precisamos mudar esta lógica já que a variável é inicializada dentro do while e testada no parâmetro condicional do while

as you initialize the name variable with null, we have no way to compare it inside while with equals(), so we need to exchange this, so we also need to change this logic since the variable is initialized inside while and tested in the while conditional parameter, doing so!

deixando o while em loop infinito para que ele não pare de solicitar os dados, e o while só funciona quando o parâmetro de condição dele for true, logo temos que adicionar true ali. Depois, precisamos realizar o teste logo após a leitura do nome, já que não faz sentido ler o resto dos dados se o usuário quer sair. Quando realizamos o teste, iremos utilizar o equals, já que a String é um objeto, ali testamos a condição, "Se nome for identico a Sair", caso isso seja verdadeiro, o while é parado com o break

leaving the while in an infinite loop so that it doesn’t stop requesting the data, and while only works when its condition parameter is true, so we have to add true there. Then, we need to perform the test right after reading the name, since it makes no sense to read the rest of the data if the user wants to leave. When we perform the test, we will use equals, since String is an object, there we test the condition, "If name is identical to Exit", if this is true, while is stopped with break

public static void main(String[] args) {
        // TODO Auto-generated method stub

        String nome = null;
        int idade;

        while (true) {
            nome = JOptionPane.showInputDialog("Digite o seu nome: ");
        
            if (nome.equals("Sair")) {
                break;
            }
            idade = Integer.parseInt(JOptionPane.showInputDialog("Digite a sua idade: "));
            
            if (idade >= 60 && idade <= 69) {
                JOptionPane.showMessageDialog(null, nome + ", você deverá tomar sua vacina em: ABRIL!");
            } else if (idade >= 50 && idade <= 59) {
                JOptionPane.showMessageDialog(null, nome + ", você deverá tomar sua vacina em: MAIO!");
            } else if (idade >= 40 && idade <= 49) {
                JOptionPane.showMessageDialog(null, nome + ", você deverá tomar sua vacina em: JUNHO!");
            } else if (idade <= 39) {
                JOptionPane.showMessageDialog(null, nome + ", você deverá tomar sua vacina em: JULHO!");
            } else if (idade >= 70) {
                JOptionPane.showMessageDialog(null, nome + ", você já pode tomar sua vacina!");
            }
        }
    }

Browser other questions tagged

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