GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Erro While

while
Tags: #<Tag:0x00007f9d211a0b88>

#1

Boa tarde, venho mais uma vez pedir ajuda dos senhores, meu problema é o seguinte, estava fazendo um exercício para verificar se um numero é primo ou n, em quando o usurário n entrasse com a palavra sair, o programa teria que ficar em loop, porem, quando digito sair, o programa n encerra, sera que alguém poderia me dizer o pq? segue a baixo o código

import java.io.PrintStream;
import java.util.Scanner;

public static void main(String[] args) {

    Scanner scan = new Scanner(System.in);
    PrintStream saida = System.out;
    int numPrimo= 0, numDivisor = 0;
    String str = "";

    saida.print("Digite saida para sair:\n");

    while (true) {
        
        try {
            
        saida.print("Digite um numero:\n");
        str = scan.nextLine();
        str = str.toUpperCase();
        if(str == "SAIR")System.exit(0);

        numPrimo = Integer.parseInt(str);

            for (int i = 1; i <= numPrimo; i++) {
                if (numPrimo % i == 0) {
                    numDivisor++;
                }

            }
            if (numDivisor == 2) {
                saida.print("numero primo");
            } else {
                saida.print("numero n é primo");
            }
        } catch (NumberFormatException nfe) {
            saida.print("Informe um numero válido!");
        }
    }
}

DESDE JA, MT OBG!


#2

Boa tarde, eu faria da seguinte forma:
boolean teste;
while (teste) {

    try {
        
    saida.print("Digite um numero:\n");
    str = scan.nextLine();
    str = str.toUpperCase();
    if(str == "SAIR")
    teste = false;

    numPrimo = Integer.parseInt(str);

        for (int i = 1; i <= numPrimo; i++) {
            if (numPrimo % i == 0) {
                numDivisor++;
            }

        }
        if (numDivisor == 2) {
            saida.print("numero primo");
        } else {
            saida.print("numero n é primo");
        }
    } catch (NumberFormatException nfe) {
        saida.print("Informe um numero válido!");
    }
}

#3

Strings em Java são comparadas com equals e equalsIgnoreCase, não com “==”.

Troque a linha:

if(str == "SAIR") System.exit(0);

por:

if(str.equalsIgnoreCase("SAIR")) System.exit(0);

Abraço.


#4

nossa, verdade, tinha me esquecido desse detalhe, mt obrigado


#5

Obrigado pela ajuda