Ciclo infinito em excepção

2 respostas
ashibarai

Boa noite. Estou com um pequeno problema numa excepção que estou a lançar… Inicializo uma booleana a false, e depois caso insira o nome verdadeiro do ficheiro, ele continua o programa, pondo a booleana a true, mas caso lance a excepção fica a false na mesma. Mas se fica a false, volta a pedir o nome, já que está na condição do ciclo do while… mas o problema é que caso o nome não esteja correcto, ele apresenta a mensagem de erro do “catch” e nunca mais sai de lá, e tenho de terminar o programa com o “Stop/Build” … Alguém sabe qual o problema do ciclo??

nome = JOptionPane.showInputDialog(null,“Introduza o nome do ficheiro que contém a matriz:”,“Nome do Ficheiro”,JOptionPane.QUESTION_MESSAGE);

boolean file=true;
    do{
        try{
            ficheiro = new Scanner(new File(nome+ ".txt"));
            file=true;
        } 
        catch(FileNotFoundException e){
            JOptionPane.showMessageDialog(null,"O ficheiro escolhido não existe..","Ficheiro Inexistente",JOptionPane.ERROR_MESSAGE);
            file=false;
            
          }
    }
    while(file==false);</blockquote>

2 Respostas

diego2005

O problema é que sempre que entra no bloco catch você atribui false a variável file, e o bloco é executado enquanto a variável file for false…

Então enquanto não achar um ficheiro válido seu código será repetido…

furutani

Olá

Tem um probleminha de logica nesse codigo.
qdo vc diz:

while(file==false);

se file for false a condiçao acima é verdadeira, pois false é igual a false.
trabalhe somente com a variavel

while(file);
Criado 27 de maio de 2007
Ultima resposta 27 de mai. de 2007
Respostas 2
Participantes 3