While

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)) {
...
}