Erro de compilação

10 respostas
vanilton.coelho

Pessoal, estou fazendo exercicios de estrutura de dados e estou me batendo com um Vector, esta dando esse erro, como se estivesse faltando algum Import, alguem poderia descrever qoeu está ocorrendo ?
estou jogando dentro de uma classe sem nada somente para ver se compila, ai esta o codigo:

import java.util.Vector;
import java.lang.*;
public class AcharInteiro{
	public int AcharInteiro(Vector ObjVet, int n){
		int find,i = 0;

		for(i++ ; i < ObjVet.size() ; i++){
			find = Integer.valueOf(ObjVet.elementAt(i)).intValue();
			if(find == n){
				return i;
			}
		}
	}
}

Obrigado a quem puder ajudar !

10 Respostas

vanilton.coelho

esqueci de colocar o erro que dá

C:\Java\AcharInteiro.java:8: cannot resolve symbol
symbol  : method valueOf (java.lang.Object)
location: class java.lang.Integer
			find = Integer.valueOf(ObjVet.elementAt(i)).intValue();
                                      ^
1 error
vanilton.coelho

o erro aponta para o “.” (ponto) entre Integer e ValueOf

jgbt

o metodo elementAt de Vector retorna um Object e não existe na classe Integer um metodo valueOf que receba um object, somente string.
faca o cast para String e depois use o valueOf.

[]'s

vanilton.coelho

tipo

aux = Integer.valueOf(String)meu_vector.elementAt(i).intValue();

realmente o codigo acima funcionou, agora queria saber, tem um codigo aqui mais ou menos assim

aux = ((Integer)(meu_vector.elementAt(i))).intValue();

porque esse segundo codigo funciona da mesma forma???

_fs

Porque você guardou Integers no Vector, mas foi um danadinho e não avisou a gente :XD:

Já que você sabe e tem certeza que o Vector só conterá Integers, é adequado fazer da segunda forma.

E não use Vector, use ArrayList. Para saber o porquê, busque no fórum :smiley:

vanilton.coelho

não entendi bem a ultima explicação Lipe, pode tentar clarear mais, naum tanto pra eu naum ficar cego :smiley:

Java_Vinicius_Machin

será que o trecho a seguir ajuda ?

import java.util.Vector;
import java.util.Enumeration;
//import java.lang.*;

public class AcharInteiro{
	static public boolean acharInteiro(Vector objVet, int n){
		int numeroAtual = 0;
		Enumeration enum;
	    enum = objVet.elements();
	    
		while ( enum.hasMoreElements() ) {
			numeroAtual = ((Integer)enum.nextElement()).intValue();
			if ( numeroAtual == n) {
				return true;
			}
		}
		return false;
	}
	
	public static void main( String args[] )
	{
		Vector v = new Vector();
		Integer primeiro = new Integer("20");
		Integer segundo = new Integer("30");
		v.add( primeiro );
		v.add( segundo );
		System.out.println( acharInteiro( v, 20));
	}
}
:wink:
_fs

Seguindo o trecho postado pelo Vinicius:

Quando você faz vector.get( 0 ), o compilador não sabe se são maçãs ou bananas que estão guardadas lá.
Contudo você, o programador, sabe que só guardou maçãs lá dentro, então pode fazer:

Maçã m = ( Maçã ) vector.get( 0 );

Contudo, se você fizesse:

Banana b = ( Banana ) vector.get( 0 );

Receberia uma ClassCastException, pois estaria tentando converter um objeto do tipo Maçã para uma Banana.

Esse “problema” de saber ou não o que está guardado numa collection foi resolvido com Generics no Java 5.

Java_Vinicius_Machin

valeu pelo complemento ae LIPE!!!
melhorou alpharagga? :slight_smile:

vanilton.coelho

Bastante, muito obrigado a todos !

Criado 21 de março de 2005
Ultima resposta 21 de mar. de 2005
Respostas 10
Participantes 4