While?

5 respostas
S

Porque o codgo abaixo entra no While quando a condição e falsa??

import javax.swing.*;
public class Forca {
     public Forca() {}
     public static void main(String[] args) {
     String z="",palavra="",resposta="";
     int tam;
     char x;
     palavra=JOptionPane.showInputDialog("escreva uma palavra");
     tam = palavra.length();
     System.out.println("a respontas deve conter: "+tam+" caracter");
     System.out.println(palavra);
     System.out.println	(resposta);    
     while (palavra!=resposta)
     	
     {
     resposta=JOptionPane.showInputDialog("escreva uma Responsta");
     System.out.println	(resposta);
     for (int i=0;i<tam;i++)
     {
     if(resposta.charAt(i)== palavra.charAt(i))
     z+=resposta.charAt(i);
     else {
   	 z+='#';
   	}
   	}
    System.out.println(z);
    }
    
    System.exit (0);
    }    
}

5 Respostas

J

E ae???

Para comprar Stringas vc deve usar o “.equals” e não “==”…

So não sei qual é a equivalencia do “!=” em relação ao “.equals”…

Espero ter ajudado…

L

Porque para comparar String (objetos) vc deve usar equals:

while (!palavra.equals(resposta))
S

Valeu

o codgo

while (!palavra.equals(resposta))

funcionou certinho [/quote]

S

a equivalencia do “!=” em relação ao ".equals seria o mesmo que fazer == só que != quer dizer diferente …

Então ficaria algo do tipo

if(1 != 2) -> isso quer dizer um é diferente de 2 ?

L

assim

System.out.print(1 == 2);

Isso mostra false, porque esta comparando se 1 é igual a 2, o que não e verdade.

System.out.print(1 != 2);

Isso mostra true, porque esta comparando se 1 é diferente de 2, o que é verdade.

== e != comparam valores, se vc usar isso para objetos, eles vão ver se a referencia das variaveis aponta para o mesmo objeto, se não apontar para o mesmo, o resultado vai ser diferente, mesmo que os atributos do objeto sejam iguais… por isso, para comparar objetos é usado um método que todo objeto tem chamado “equals”, esse método retorna um valor booleano dizendo se o objeto que invocou o método é igual ao objeto que foi passado pelo parâmetro:

System.out.print(obj1.equals(obj2));

Verifica se o obj1 é igual ao obj2, para saber se o obj1 é diferente do obj2 vc tem que usar um operador de negação, no caso o !

System.out.print(!obj1.equals(obj2));

Verifica se o obj1 é igual ao obj2, e depois inverte o resultado, logo se ele for igual (retornando true), vai negar e imprimir é false, e os objetos forem diferente (retornando false), vai negar e imprimir true… ou seja, o != para objetos é um equals com o operador ! na frente… que significaria algo do tipo: not equals.

Mas vcs precisam saber que como equals é um método, ele pode ser sobrescrito, o original dele la da classe Object é uma comparação de valor normal (obj1 == obj2), logo se vc criar uma classe normal que não sobrescreve equals, o seu equals vai ser simplesmente obj1 == obj2

é isso, da uma olhada nos operadores e no javadoc do método equals da classe Object…

flw

Criado 10 de maio de 2007
Ultima resposta 14 de mai. de 2007
Respostas 5
Participantes 4