Laço que repetição

2 respostas
F
Não consigo achar o erro no laço de repetição.
String [] parImpar = {"Par","Impar"};  
        int p=0;        
        
     while(p != 1 ){
            
     parImpar[p] = JOptionPane.showInputDialog(" Entre com o Par ou Impar: ");        
               
      
    if(parImpar[p] == "Par"){
        JOptionPane.showMessageDialog(null," Par ^^");
    p++;}
    
    if (parImpar[p] == "Impar"){
        JOptionPane.showMessageDialog(null," Impar ^^");   
    p++;}
    
    if(parImpar[p] != "Par" && parImpar[p] != "Impar" ){
     JOptionPane.showMessageDialog(null,"Voce errou, tente novamente.");}       
        
    }    
        
    }       
     }

Qualquer valor que eu coloque ele repeti o laço...

if(parImpar[p] != "Par" && parImpar[p] != "Impar" ){
     JOptionPane.showMessageDialog(null,"Voce errou, tente novamente.");}

2 Respostas

M

Boa tarde,

Na verdade o teu erro está em dois lugares na lógica:

  1. Você sempre deve comparar String usando o equals.
  2. A parte que faz a comparação do impar deve ficar dentro do else.
String[] parImpar = { "Par", "Impar" };
		int p = 0;

		while (p != 1) {

			parImpar[p] = JOptionPane.showInputDialog(" Entre com o Par ou Impar: ");

			if (parImpar[p].equals("Par") ) {
				JOptionPane.showMessageDialog(null, " Par ^^");
				p++;
			}else{
				if (parImpar[p].equals("Impar") ) {
					JOptionPane.showMessageDialog(null, " Impar ^^");
					p++;
				}
			}
			
			if (parImpar[p] != "Par" && parImpar[p] != "Impar") {
				JOptionPane.showMessageDialog(null, "Voce errou, tente novamente.");
			}

		}

Caso voce queira comparar as palavras ignorando maiúsculas e minusculas pode usar o equalsIgnoreCase em vez de equals.

G

Na verdade pode ser diferente:

String[] parImpar = { "Par", "Impar" };  
int p = 0;  
  
while (p != 1) {  
  
    parImpar[p] = JOptionPane.showInputDialog(" Entre com o Par ou Impar: ");  
  
    if (parImpar[p].equals("Par") ) {  
        JOptionPane.showMessageDialog(null, " Par ^^");  
        p++;  
    }else if (parImpar[p].equals("Impar") ) {  
            JOptionPane.showMessageDialog(null, " Impar ^^");  
            p++;    
    }else{
        JOptionPane.showMessageDialog(null, "Voce errou, tente novamente.");  
    }  
  
}

se nao for par e nao for impar, não vejo razão para colocar outro if, apeans dizer else basta.

if (parImpar[p] != "Par" && parImpar[p] != "Impar") {  
        JOptionPane.showMessageDialog(null, "Voce errou, tente novamente.");  
    }

cuidado para não comparar String desta forma

Criado 20 de outubro de 2014
Ultima resposta 24 de out. de 2014
Respostas 2
Participantes 3