Verificar o conteúdo de um inteiro

13 respostas
levimendes

como eu faço para verificar o conteúdo de um inteiro, por exemplo na classe String nós temos o método equals() mas tipo primitovo não possui esse método… :?:

13 Respostas

j0nny
if(minhaVariavelInteira == 5)
    //é igual

Na String temos equals para verificar seu conteúdo, e se usassemos == verificaríamos a referência dele.

Era isso?

ViniGodoy

Você só precisa usar métodos como equals em tipos não primitivos. Não há como testar referências em tipos primitivos, o teste do == sempre verifica conteúdo.

levimendes

o programa não está aceitando esse código:

private int ra;
    
    public void setRa(int ra) {
        if (ra == "")
            throw new IllegalArgumentException("Número do ra informado é inválido");
        else 
            this.ra = ra;
    }
dyorgio

vc soh pode usar o operador == para verificar tipo primitivo (int, byte, double, float)
e referencia de objetos (obj1 == obj2), referencia…não valor.

um tipo primitivo nunca esta vazio ou null, ele sempre tem algum valor do tipo dele.
senão me engano, caso vc não sete um valor numa variavel primitiva o valor fica -1.

P

corrigindo

private int ra;

public  void setRa(int ra) {  
	    if (ra==0)  
	         throw new IllegalArgumentException("Número do ra informado é inválido");  
	     else   
	         this.ra = ra;  
	 }

para comparar qualquer coisa com String, que é um objeto, use o método equals()
e como primitivo não tem o método equals, terá que usar a classe Integer.

E int quando não tem valor específico fica como ZERO e não -1.

dyorgio

pois é… me enganei :slight_smile:

ViniGodoy

Puka:
para comparar qualquer coisa com String, que é um objeto, use o método equals()
e como primitivo não tem o método equals, terá que usar a classe Integer.

E int quando não tem valor específico fica como ZERO e não -1.

Isso funciona, mas é um código completamente idiota, não?

Primeiro, pq vc está fazendo um boxing desnessário para Integer.
Segundo, pq a comparação com string sempre resultará em false.
Terceiro, pq também seria necessário testar se ra não é nulo.

Finalmente, pq o resultado final irá fazer auto-unboxing do conteúdo do int.

Sendo que no código original, o método ficará como:

public void setRa(int ra) { this.ra = ra; }

E sem nenhum dos problemas citados acima.

P

É o que dá tentar ajudar leigos.

O método está todo errado mesmo, porque se tu passa um int pra que tu vai comparar com uma String, né.

Se passar uma String pra setar um inteiro, as vezes isso acontece, poderia até ser…

levimendes

"Puka’, não sei se vc percebeu, mas esta parte do fórum é destinada para assuntos básicos de java, se vc acha que a pergunta é muito simples, não responda.Simples

ViniGodoy

Na verdade, até foi por isso que a corrigi. Num fórum de iniciantes um exemplo como o seu, funcional mas logicamente sem sentido, pode ser mais prejudicial do que benéfico. Principalmente pq ele praticamente endossa a confusão do autor do tópico, que foi esclarecida nos posts seguintes.

levimendes

viniGodoy, neste caso como você faria para validar o conteúdo do campo int?

ViniGodoy

Primeiro, um campo int nunca contém valor vazio. É impossível defini-lo, portanto, não é necessário checar essa condição.

Se vc tem um intervalo máximo que o número pode conter (digamos, de 1 até 20), então aí sim, use a exception:

public void setRa(int ra) { if (ra <= 1 || ra >= 20) throw new IllegalArgumentException("O valor de ra deve ser entre 1 e 20: fornecido" + ra); this.ra = ra; }

Caso contrário, o método só com a linha da atribuição.

levimendes

Valeu viniGodoy.
Um abraço.

Criado 12 de março de 2010
Ultima resposta 12 de mar. de 2010
Respostas 13
Participantes 5