Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Heur

Tratamento de Exceção para Inteiro

Recommended Posts

Olá pessoal.

 

Eu estou fazendo um programinha simples com array de 10 inteiros.

 

O caso é que, eu peço, através de DataInputStream para ele digitar

um numero qualquer para cada posição da array, para mim armazenar

na array e fazer o calculo posterior.

 

O problema é se a pessoa digita ao invés de 1, 1.0, por exemplo.

 

Isso é um double, e a array é Integer.

 

Agora queria uma ajuda de vocês, hábeis companheiros, como eu tra-

to esse tipo de exceção no IOException.

 

De forma que o programa exiba ao usuario que ocorreu erro, e que

volte a pedir para digitar o numero corretamente (inteiro, e não double).

 

Alguém ajuda?

 

Obrigado desde já.

^_^

Compartilhar este post


Link para o post
Compartilhar em outros sites

Trate NumberFormatException ou IntegerException.

try {
   // código para definição de valor da posição do array
} catch(NumberFormatException ex) {
   ex.printStackTrace();
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas se eu fizer isso ele vai pedir novamente pra digitar o numero ou vai sair do programa?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você nunca encerra um programa com uma Exception. Dentro do bloco try você tenta executar um comando arriscado. E caso ele dispare uma excessão você trata dentro do bloco catch. Você pode criar um loop que só encerra quando o usuário informa um número inteiro válido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa.. blza??

Olha nunca usei a DataInputStream p recuperar dados do usuario, mas capturando as execeções q o vergil falou aí dentro de um loop você consegue fzr com q em vez de o programa parar quando o dado for inválido, o usuario insira novamente o valor;

 

Fiz um exemplo usando a Scanner p você ter uma ideia

int i = 0;
Scanner input = new Scanner(System.in); 
while (i < 10) {
    try {
        int value = input.nextInt();
        // aqui você armazena no array
    } catch (InputMismatchException inputMismatchException) {
        System.out.println("Valor inválido");
        input.nextLine(); // esvazia o fluxo aqui, ou seja, o valor invalido é lido e jagado fora..
        continue;
    }
    i++; // repare q ele soh vai incrementar kdo o valor lido for correto
}

Utilizando os mesmo conceitos com DataInputStream você faz funcionar, ou então você pode sempre usar a Scanner q acho ser classe mais comum p leitura apartir da versão 5.0

Abraço http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.