Object to int

10 respostas
C

Tenho um tipo Object inteiro e quero comparar com um int.
Alguém me ajuda a fazer isto? Não sei como fazer…

10 Respostas

victorwss

cmcl:
Tenho um tipo Object inteiro e quero comparar com um int.
Alguém me ajuda a fazer isto? Não sei como fazer…

Não entendi sua pergunta.
Mas se você tiver um objeto java.lang.Integer, pode fazer isso:

Integer a = 5; if (a == 6) { System.out.println("a"); } else if (a > 6) { System.out.println("b"); }

mario.fts

Se estiver encapsulado em um Object, vc faz um cast assim:

Object obj = new Integer(6);
        int i = 6;

	if (((Integer)obj).intValue() == i)
            System.out.println("a");
       else
            System.out.println("b");
C
public class No {
	
	private No proximo;
	
	private Object elemento;

public Object getElemento() {
		return elemento;
		}
}
public class Lista{
	
	private No aInicio;
	
	private No aFim;

public No getAInicio(){
		return this.aInicio;
	}

Tenho estas classes, quando tento fazer esta comparação:

elemento!=(Integer)solucao.getAInicio().getElemento()

Aparece-me o seguinte erro:
Exception in thread "main" java.lang.ClassCastException: No cannot be cast to java.lang.Integer
at Testa.main(Testa.java:30)

mario.fts

Final de ano é cheio de trabalho de estrutura de dados! :smiley:

Perguntas:

Como vc faz pra colocar o valor no elemento?
O elemento e sempre um inteiro? se sim, pq vc não coloca ele como int?

[]s

C

Os valores lidos do teclado estao assim:

Scanner sc=new Scanner(System.in); int an; for(int i=0;i<nPessoas;i++){ an=sc.nextInt(); lista.adiciona(new Integer(an));

Eu tenho como tipo Object porque vou usar o mesmo codigo para fazer uma lista de listas.

Testei com:

((Integer)(solucao.getAInicio().getElemento())).intValue()!=elemento

Continua a dar o mesmo erro…

mario.fts

poste o código do seu método adiciona.

Quanto a isso… por um acaso vc está criando uma lista com subníveis? não me lembro se esse era o nome, mas lembro que tinha uma estrutura que era uma lista onde o elemento podia ser um valor ou uma nova sublista…

C

Se poderes ser mais especifico…

mario.fts

cmcl:
Os valores lidos do teclado estao assim:

Scanner sc=new Scanner(System.in); int an; for(int i=0;i<nPessoas;i++){ an=sc.nextInt(); lista.adiciona(new Integer(an));

Eu tenho como tipo Object porque vou usar o mesmo codigo para fazer uma lista de listas.

o que tem dentro desse método adiciona, do objeto lista. coloque o código.

se eu entendi, vc hora vai colocar um Integer dentro desse Objetc e hora vai colocar uma lista, é isso?

C

Sim é isso que eu quero.

public void adiciona(Object elemento){
		
		No novo = new No(elemento);
		if(this.totalDeElementos!=0)
			this.aFim.setProximo(novo);
		
		this.aFim = novo;
		
		if(this.totalDeElementos == 0){
			this.aInicio = this.aFim;
		}
		
		this.totalDeElementos++;
			
		}
mario.fts

bizarro fazer isso em java. em C tudo em, é só tratar os ponteiros.

vc pode usar o operador instanceof pra descobrir o que é que tem dentro do object, antes de fazer o cast, assim vc trata conforme o caso

Object a = new Integer(7);
			
			if(a instanceof Integer)
				System.out.println("é um inteiro");
			else
				System.out.println("é outra coisa");

mas sinceramente, isto é uma puta ganbiarra. sugiro vc procurar alguma forma melhor de fazer isso.

Criado 20 de outubro de 2008
Ultima resposta 20 de out. de 2008
Respostas 10
Participantes 3