Gostaria que reparassem na quantidade de tratamento de exceção. qualquer input INT que eu declarar fica sujeito a um erro casso passem uma string pra ele é má pratica usar muitos try catch? deixa o programa mais lento? ou não! posso usar a vontade para desviar dos erros e continuar o programa?
Random aleatorioID = new Random();
final int MAXID = 1000;
while (true) {
produto p = new produto();
System.out.println("Nome: ");
String nome = in.next().trim();
p.setNome(nome);
int tipo = 0;
String stringTipo = null;
while (true) {
System.out.println("\tTipo\n1 MASSA\n2 BEBIDA\n3 LIMPEZA\n>> ");
try {
stringTipo = in.next();
tipo = Integer.parseInt(stringTipo);
if (tipo > 0 && tipo <= 3) {
break;
}
System.out.println("voce digitou \"" + stringTipo + "\" invalido");
} catch (NumberFormatException ex) {
System.out.println("voce digitou o caractere \"" + stringTipo + "\" é invalido");
}
}
switch (tipo) {
case 1: {
p.setTipo(TIPOS.MASSA.getTipo());
break;
}
case 2: {
p.setTipo(TIPOS.BEBIDA.getTipo());
break;
}
case 3: {
p.setTipo(TIPOS.LIMPEZA.getTipo());
break;
}
}
float preco = 0;
String precoString = null;
while (true) {
System.out.print("Preço: ");
try {
precoString = in.next();
preco = Float.parseFloat(precoString);
p.setPreco(preco);
break;
} catch (NumberFormatException ex) {
System.out.println("voce digitou \"" + precoString + "\" nao é valido");
}
}
int idEscolhido = 0;
while (true) {
idEscolhido = aleatorioID.nextInt(MAXID);
if (!id.contains(idEscolhido)) {;
break;
}
System.out.println("ID já existente");
}
id.add(idEscolhido);
p.setID(idEscolhido);
escreverIDs(String.valueOf(idEscolhido));
int quant = 0;
String stringQuant = null;
while (true) {
System.out.println("Quantidade: ");
try {
stringQuant = in.next();
quant = Integer.parseInt(stringQuant);
p.setQuantidade(quant);
break;
} catch (NumberFormatException ex) {
System.out.println("voce digitou \"" + stringQuant + "\" nao é valido");
}
}
adicionarProduto.addProduto(p);
char continuar = in.next().charAt(0);
if (continuar == 'n' || continuar == 'n') {
this.ReescreverMudanças();
break;
}
}
}
private void escreverIDs(String idEscolhido) {
try {
attIDS.setReadOnly(false);
BufferedWriter escreverID = new BufferedWriter(new FileWriter(caminhoArqIDs.toFile(), true));
escreverID.write(idEscolhido + "\r\n");
escreverID.flush();
escreverID.close();
attIDS.setReadOnly(true);
} catch (IOException ex) {
System.out.println("erro ao escrever arquivo IDs");
}
}
private void ReescreverMudanças() {
try {
att.setReadOnly(false);
BufferedWriter escrever = new BufferedWriter(new FileWriter(caminhoCompleto.toFile(), true));
adicionarProduto.produtos.forEach(action -> {
try {
escrever.write(action.getTipo() + " ");
escrever.write(action.getNome() + " ");
escrever.write(action.getID() + " ");
escrever.write(action.getQuantidade() + " ");
escrever.write(action.getPreco() + "\r\r\n");
} catch (IOException ex) {
System.out.println("erro ao escrever as informaçoes de produtos no arquivo Registros.txt");
}
});
escrever.flush();
escrever.close();
att.setReadOnly(true);
} catch (IOException ex) {
System.out.println("erro ao abrir o arquivo Registros.txt para escrita");
}
}
