Ola Pessoal, estou Fazendo ± o Seguinte Codigo
//usuario Digita um veiculo, deve ser um carro, motocicleta, bicicleta
String veiculo = JOptionPane.showInputDialog("veiculo").toUpperCase();
//ele vai entrar no while caso estiver diferente dos tres modelos, caso um estiver correto nao entre no while
while(veiculo!="CARRO"&&veiculo!="MOTOCICLETA"&&veiculo!="BICICLETA")
{
JOptionPane.ShowMessageDialog(null,"Digite um veiculo Correto";
veiculo = String veiculo = JOptionPane.showInputDialog("veiculo");
}
O problema que eu mesmo digitando CARRO ele entra no while, nao sei o que esta acontecendo, poderiam me ajudar?
mude isso
while(veiculo!="CARRO"&&veiculo!="MOTOCICLETA"&&veiculo!="BICICLETA")
para isso
while(veiculo!="CARRO" || veiculo!="MOTOCICLETA" || veiculo!="BICICLETA")
Utilize o while da seguinte forma:
while(!veiculo.equals("CARRO") && !veiculo.equals("MOTOCICLETA") && !veiculo.equals("BICICLETA")) {
....
}
[quote=mvergani]mude isso
while(veiculo!="CARRO"&&veiculo!="MOTOCICLETA"&&veiculo!="BICICLETA")
para isso
while(veiculo!="CARRO" || veiculo!="MOTOCICLETA" || veiculo!="BICICLETA")
[/quote]
Usar ou na lógica cria um loop infinito.
Não se esqueça que em Java, strings não se comparam com “==” ou “!=”, mas com “equals” (ou no seu caso em particular, “equalsIgnoreCase”). Exemplo:
while(
! "CARRO".equalsIgnoreCase (veiculo) &&
! "MOTOCICLETA".equalsIgnoreCase(veiculo) &&
! "BICICLETA".equalsIgnoreCase (veiculo)) {
...
}