Heur 0 Denunciar post Postado Maio 19, 2010 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
Vergil 15 Denunciar post Postado Maio 19, 2010 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
Heur 0 Denunciar post Postado Maio 19, 2010 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
Vergil 15 Denunciar post Postado Maio 19, 2010 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
Giovanni Ritchie 0 Denunciar post Postado Maio 19, 2010 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