Pessoal,
Estou com um erro nesta linha:
if (NOME_PRODUTO != null && QTE_PRODUTO != null && VALOR_PRODUTO != null){
QTE_PRODUTO é inteiro e VALOR_PRODUTO é float. Acho que não está aceitando o null.
Alguém pode me orientar?
Obrigado
Leandro
Pessoal,
Estou com um erro nesta linha:
if (NOME_PRODUTO != null && QTE_PRODUTO != null && VALOR_PRODUTO != null){
QTE_PRODUTO é inteiro e VALOR_PRODUTO é float. Acho que não está aceitando o null.
Alguém pode me orientar?
Obrigado
Leandro
Um valor primitivo não pode ser null. Um java.lang.Float pode ser null, mas um float não.
A propósito, o uso de float (ou seu irmão, o java.lang.Float) é expressamente não-recomendado. Use o double ou o java.math.BigDecimal. Use float apenas em casos bastante especiais (por exemplo, para usar em alguns casos em Java2D).
Entendi, mas como então eu declaro um inteiro nulo e um double nulo?
Obrigado
Double e float tem o mesmo problema de perda de precisão quando são usados para representar valores monetários. Se tem preguiça de criar uma classe Dinheiro, use BigDecimal, int ou long. Se usar int ou long você estará representando centavos ao invés de Reais. Lembre-se disso quando for escrever na tela.
O ideal é deixar de preguiça e encapsular essa bagaça toda em uma classe Dinheiro.
Pois é, use o encapsulamento - como eu falei, primitivos não podem ser null, apenas os wrappers.
Entretanto, você provavelmente está tentando usar JDBC, não? Nesse caso, não se esqueça que há um método chamado wasNull. Por exemplo, digamos que você tenha um campo que você quis ler com getDouble(). Mas getDouble() retorna 0 se o valor lido for, na verdade, SQL NULL. Então você ainda precisa chamar isNull. Você pode encapsular isso. Veja como:
public static Double getDouble (ResultSet rs, String columnName) {
double d = rs.getDouble (columnName);
if (rs.wasNull()) return null;
else return Double.valueOf (d);
}
Vou tentar aqui. Estou trabalhando com JDBC. Vou ver se consigo entender o que vc me explicou.
Muito obrigado!
Leandro
Pois é, use o encapsulamento - como eu falei, primitivos não podem ser null, apenas os wrappers.Entretanto, você provavelmente está tentando usar JDBC, não? Nesse caso, não se esqueça que há um método chamado wasNull. Por exemplo, digamos que você tenha um campo que você quis ler com getDouble(). Mas getDouble() retorna 0 se o valor lido for, na verdade, SQL NULL. Então você ainda precisa chamar isNull. Você pode encapsular isso. Veja como:
public static Double getDouble (ResultSet rs, String columnName) { double d = rs.getDouble (columnName); if (rs.wasNull()) return null; else return Double.valueOf (d); }
Aproveitando, por que eu tenho que verificar se os campos de um formulário em uma página web são nulos antes de ir para a minha classe que tem o método de inserir no banco de dados, por exemplo?
obrigado
Porque você deve inserir apenas dados “limpos” e devidamente validados no banco de dados. Vai que alguma combinação dos campos nulos ou sujos acaba não sendo bloqueada por algum dos constraints da tabela…
EDIT - Agora entendi: de quem é a responsabilidade por verificar se os dados estão coerentes? Eu diria que a responsabilidade deve ser compartilhada - a página deve checar algumas coisas fáceis (como por exemplo se um dado numérico é mesmo numérico, ou se uma data que deveria ser preenchida foi preenchida) mas outras coisas devem ser rechecadas na sua classe que tem o método de inserção. É que pode ser que os dados não venham exatamente pela sua página mas por outro caminho, e é sempre bom checar tudo.
entendi, obrigado 
agora vou quebrar a cabeça para entender o que vc me explicou de encapsulamento… :shock:
Porque você deve inserir apenas dados “limpos” e devidamente validados no banco de dados. Vai que alguma combinação dos campos nulos ou sujos acaba não sendo bloqueada por algum dos constraints da tabela…
EDIT - Agora entendi: de quem é a responsabilidade por verificar se os dados estão coerentes? Eu diria que a responsabilidade deve ser compartilhada - a página deve checar algumas coisas fáceis (como por exemplo se um dado numérico é mesmo numérico, ou se uma data que deveria ser preenchida foi preenchida) mas outras coisas devem ser rechecadas na sua classe que tem o método de inserção. É que pode ser que os dados não venham exatamente pela sua página mas por outro caminho, e é sempre bom checar tudo.
Ola pessoal… sou novo por aqui e sou novo em java tambem.
gostaria de saber se alguem me ensina a usar o guj pra postar uma divida… não sei fazer ainda (sou totalmente novato).
e gostaria de pedir ajuda no codigo abaixo:
public class BooleanScanner {
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
boolean s = true;
System.out.println("s para sim e n para não");
s = entrada.hasNext();
if (!s){
System.out.println(" pode entar"); //PORQUE QUE AS RESPOSTAS ESTAO SEMPRE SAINDO "NON PODE ENTRAR?"
// EU QUERO QUE O CODIGO VERIFICA A SITUAÇAÕ.... SERA QUE EU VO TER QUE
// CRIAR OUTRA VARIAVEL?
}else
System.out.println("non pode entar");
}}