Dúvida em relação a lógica no JFRAME

4 respostas Resolvido
programaçãojava
M

Gente, estou trabalhando com banco de dados, e fiquei responsável por criar um aplicativo Empresa onde o usuário pode inserir, alterar e excluir um novo cliente.

Eu tenho os dados {A, B} como obrigatórios, e {C, D, E} como opcionais.

Se o cara fornece <strong>{A, B, C, D, E}</strong>, o programa faz as conversões necessárias para colocar todos os Dados no campo de texto.

<strong>A</strong> - Chave primária do tipo int;

<strong>B</strong> - Tipo float que não permite nulo;

<strong>C</strong> - Inteiro;

<strong>D</strong> - Inteiro;

<strong>E</strong> - String;

Quando o usuário põe apenas os dados {A, B} o programa também faz as conversões necessárias, mas quando chega em C e D, que é inteiro, ele não converte. Isso porque não há o que converter, pois estamos trabalhando com valor nulo… O erro é:

java.lang.NumberFormatException: For input string: ""

at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)

at java.lang.Integer.parseInt(Integer.java:592)

at java.lang.Integer.parseInt(Integer.java:615)

at View.GUIEmpresa.btSalvarActionPerformed(GUIEmpresa.java:357)

Eu queria saber como farei para desenvolver uma lógica onde eu consiga abranger todas essas pequenas condições sem precisar criar vários IF’s!

4 Respostas

Andrauss
Solucao aceita

Olá, basicamente você deve verificar se o valor é válido antes de setar, existem algumas formas de fazer isso, com if é a mais adequada, exemplo:

cliente.setCampoInteiro(valor.trim().isEmpty()? null: Interger.parseInt(valor));

Você também pode colocar um try/catch na expressão, como:

try {
     cliente.setCampoInteiro(valor); 
} catch ( NumberFormatException erro ) {
    // Tratar o erro
}
M

Deu certo! Eu não estava colocando o trim!

Você poderia me explicar o que necessariamente significa essa linha:
valor.trim().isEmpty()? null: Interger.parseInt(valor)

Qual a função do método trim()?
Essa interrogação depois do isEmpty(), significa o quê?

E os dois pontos após o null?

Andrauss

Olá, o trim remove os espaços em branco " " ao redor da string (antes e depois). Essa estrutura que usei é chamada de if ternário, funciona basicamente assim:

condição ? valor_se_verdadeiro : valor_se_falso;

A interrogação é para demarcar sua expressão deve retornar true ou false.

M

Entendi. Agora porque eu precisaria remover os espaços em branco " " ao redor da String?

E outra, com este if, o resultado aparece no campo de texto como “Null”. Eu queria que ele se apresentasse como um espaço vazio, é possível?

Criado 18 de março de 2017
Ultima resposta 18 de mar. de 2017
Respostas 4
Participantes 2