Ir ao conteúdo
  • Cadastre-se

Tratamento numero e letras(try,catch)


fabao1966

Posts recomendados

Oi pessoal, O meu programa, trata a entrada de erro com try,catch, só que ele da a mensagem de erro e sai, eu queria forçar que o usuario digitasse o campo que esta sendo tratado, por exemplo, se for um numero ele não pode colocar letra, enquanto isso, o programa volta para o mesmo campo enquanto ele não digitar numero, segue o codigo abaixo:

package Frigorifico;

import javax.swing.JOptionPane;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;


public class GravarFrigorifico {

public static void main(String[] args) {
Categorias c1 = new Categorias();
Categorias c2 = new Categorias();
int i=0;
int op=5;

while(op != 0 ){

op = Integer.parseInt(JOptionPane.showInputDialog("1...CADASTRO DE PRODUTO\n2...LER CADASTRO\n 0...SAIR "));
if(op == 1){
try{
c1.setNome(JOptionPane.showInputDialog("Nome do 1 Produto: "));
c1.setCodigo(Integer.parseInt(JOptionPane.showInputDialog("Codigos do Produto: ")));
c1.setPeso(Double.parseDouble(JOptionPane.showInputDialog("Peso do Produto: ")));
c1.setValor(Double.parseDouble(JOptionPane.showInputDialog("Valor do Produto: ")));
} //fim try

catch (Exception ex){
JOptionPane.showMessageDialog(null, "Aconteceu um erro");

} //fim catch
try{
c2.setNome(JOptionPane.showInputDialog("Nome do 2 Produto: "));
[B]c2.setCodigo(Integer.parseInt(JOptionPane.showInputDialog("Codigos do Produto: ")));[/B]
c2.setPeso(Double.parseDouble(JOptionPane.showInputDialog("Peso do Produto: ")));
c2.setValor(Double.parseDouble(JOptionPane.showInputDialog("Valor do Produto: ")));
} //fim try
catch (Exception ex){
JOptionPane.showMessageDialog(null, "Aconteceu um erro");

} //fim catch

try{
//FileOutputStream
FileOutputStream f = new FileOutputStream("Frigorifico.txt");
ObjectOutputStream s = new ObjectOutputStream(f);
s.writeObject(c1);
s.writeObject(c2);
s.flush(); //força a saida do que esta na memoria.esvasia o buffer
JOptionPane.showMessageDialog(null, "Objetos gravados com sucesso");
System.out.println("Objetos gravados com sucesso!!!");
} //fim try
catch (Exception ex){
JOptionPane.showMessageDialog(null, "Aconteceu um erro");
System.out.println("Aconteceu um erro");
} //fim catch


}
else if(op ==2){
try{
FileInputStream f = new FileInputStream("Frigorifico.txt");
//FileInputStream obtem bytes de entrada de um arquivo, é
//destinado a leitura de uma série de bytes
ObjectInputStream s = new ObjectInputStream(f);
//um ObjectInputStream desserializa dados primitivos e objetos
//anteriormente escritos.
Categorias c;
do{
c = (Categorias) s.readObject();
//chamando a classe Computador e lendo o objeto
JOptionPane.showMessageDialog(null, "Nome do Produto: "+c.getNome()+"\ncódigo do Produto: "+c.getCodigo()+"\nPeso do Produto: "+c.getPeso()+"\nValor do Produto: "+c.getValor());

}//fim do
while(c.nome!=null);//enquanto tiver nome no computador
//ficara no laço, até que o proximo
//nome do pc seja vazio(null)
}//fim try
catch(Exception ex){
System.out.println("Aconteceu um erro");
return;

}// fim catch

}

else if((op > 2)||(op < 0)){
JOptionPane.showMessageDialog(null, "opção inválida, digite 1 ou 2");
}
else{
JOptionPane.showMessageDialog(null, "saindo do programa");
}

i++;
}//fim while

}
}

Link para o comentário
Compartilhar em outros sites

Ola!

Você pode usar condicional (if, Else) para "tratar" cada campo que deseja verificar se está correto a inserção e estas condicional dentro de um loop, se estiver correto sai do loop e vai para a próxima entrada, e por ai vai.

Pode também fazer uma extensão de JOptionPane alterando Documents e colocar uma condição dentro da documentação, assim, você ja "elimina" a possibilidade do usuário digitar letra ou número, vai depender de como codificar a extensão.

Dê uma olhada neste Link, está em inglês, mas se der uma olhada no código acredito que vai entender.

Boa sorte.

Link para o comentário
Compartilhar em outros sites

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!