Laço while no JOptionPane

3 respostas
Douglas_Lourencini

Bom dia galera!

Estou tentando fazer um exercício que o professor passou em sala, onde deveríamos criar um programinha que simulasse o controle de acesso de uma balada, onde se o cliente for menor de 18 anos, é informado ao mesmo que a entrada só é autorizada acompanhado de um maior de idade… Até aí tá funcionando beleza, porém eu quero colocar um laço while que seria mais ou menos isso: Enquanto o campo nome estiver em branco, mostrar uma janela com a mensagem: “o campo nome deve ser preenchido”.

Meu código está assim:

import javax.swing.JOptionPane;


import javax.swing.UIManager;

public class CaixaDeDialogo{
	
	public static void main(String[]args){
	
		String nome;
		int verifica;
  
		UIManager.put("OptionPane.cancelButtonText", "CANCELAR");
		UIManager.put("OptionPane.yesButtonText", "SIM");    
		UIManager.put("OptionPane.noButtonText", "NÃO");  
		UIManager.put("OptionPane.okButtonText", "OK"); 
   
			nome = JOptionPane.showInputDialog(null,"Olá! Digite seu nome:","Entrada",1);
			while(nome==""){
				JOptionPane.showInputDialog("O campo nome deve ser preenchido");
			}
			verifica = JOptionPane.showConfirmDialog(null,nome+", você é maior de 18 anos?","Verificação",0);
   
			if(verifica ==JOptionPane.YES_OPTION){
				
				JOptionPane.showMessageDialog(null,"Pode entrar.\nBom divertimento!");
				}else{
					
					verifica = JOptionPane.showConfirmDialog(null,nome+", Você só poderá entrar se estiver acompanhado por maior de 18 anos.\nVocê está acompanhado(a) com maior de 18 anos");
    
				        if(verifica==JOptionPane.YES_OPTION){
						JOptionPane.showMessageDialog(null,"Pode entrar.\nBom divertimento!");
					}else{
           
						JOptionPane.showMessageDialog(null,"Você não pode entrar!");
			}        
		}
	}
}

Mas não está funcionando.
Alguém pode me ajudar?
Abraços…

3 Respostas

ViniGodoy

O que não está funcionando?
Dá algum erro?

Observe que no seu while você comete 2 erros:
a) Você está comparando String com ==. String só se compara usando o método equals;
b) Você não está lendo novamente o nome. O certo seria:

while(nome.isEmpty()){ JOptionPane.showInputDialog("O campo nome deve ser preenchido"); nome = JOptionPane.showInputDialog(null,"Digite seu nome novamente:","Entrada",1); }

Douglas_Lourencini

Muito obrigado Vini, vou tentar isso…

Douglas_Lourencini

Funcionou perfeitamente, valeu!!!

Criado 4 de setembro de 2012
Ultima resposta 4 de set. de 2012
Respostas 3
Participantes 2