Erro no Vector.add

12 respostas
n10

karas eu estou com um probleminha
eu tenho o seguinte programa

import java.util.Vector;

public class Teste2 {

String a[] = {primeiro,segundo }   ;

Vector v = new Vector(1);

v.add(a);

}

so que quando eu mando compilar o programa da o seguinte erro :

expected
v.add(a);

se alguem poder ajudar desde ja agradeço :smiley:

12 Respostas

Rafael_Steil

Veja em

http://java.sun.com/j2se/1.4.2/docs/api/java/util/Vector.html

O metodo “add” nao recebe um array de Strings como argumento.

[editato]duh, ele aceita, claro, pelo fato de um array ser Object… porem, sera guardado o teu array de objetos passado como argumento, ao inves de adicionar cada item separadamente, como acontece em determiandas classes[/editado]

Rafael

n10

esqueci de dizer é como se eu não estivesse colocando o identificador “a” no “v.add(a)” , isto é, esse mesmo erro da se eu colocar “v.add();”

n10

:smiley: valeu só que o problema é o seguinte quando eu mando adicionar um String por exemplo ele tb da o erro e isso com outros objetos tb…
ex:

import java.util.Vector;

public class Teste {

Integer b =  Integer(90);

Vector v = new Vector(1);

v.add(b);

}
Rafael_Steil

O erro nao eh com Vector, mas sim com o teu programa. Voce nao colocou as chamadas dentro de algum metodo… voce simplesmente “jogou”… Ao inves de fazer

import java.util.Vector; 
public class Teste { 
    Integer b = Integer(90); 
    Vector v = new Vector(1); 
    v.add(b); 
}

faca

import java.util.Vector; 
public class Teste { 
    public static void main(String[] args) {
        Integer b = Integer(90); 
        Vector v = new Vector(1); 
        v.add(b); 
    }
}

Rafael

Rafael_Nunes

Perae, agora eu que não entendi, porque a chamada tem de estar dentro de algum método?

Rafael_Steil

hhmmm… pq a especificacao da linguagem assim diz.

Voce nao pode fazer chamadas de metodos sem estar dentro de algum outro metodo ( a excecao eh qdo vc atribui valores em declaracoes ).

class Teste {
    int i = 10;
}

eh valido, mas

class Teste {
    int i = 10;
    i++;
}

eh errado. o “i++” nao pode ficar “solto” .

Rafael

n10

karakas bicho tu saka mesmo…realmente parou de da o erro… e ele tb adicionou o array :smiley:

V

Nesse caso se for uma classe só tem que estar dentro do metodo main, se for duas uma de regra de negocios tambem tem que estar dentro de algum metodo.

public class Cadastro
{
  public Cadastro()
  {
     Vector v=new Vector();
  }
  public void adicionar(String str)
  {
     v.add(str);
  }
}

tem que estar no metodo, pois quando vc chamar da main vai ter que chamar algum metodo da classe Cadastro para adicionar no Vector.

Falow :stuck_out_tongue:

n10

eita kara esse código naum vai dar erro não? public class Cadastro { public Cadastro() { Vector v=new Vector(); } public void adicionar(String str) { v.add(str); } }
me corrijam se eu tiver errado mas o Vector v não vai estar disponivel em adicionar() pq v não vai estar no escorpo de Cadastro() — me desculpem é q eu to aprendendo agora e fico me prendendo a detalhes…

Rafael_Nunes

Eu acredito que aquele código alí dará erro, mas foi só pra ilustrar mesmo…
Agora entendi, basicamente você só pode fazer a chamada de um método dentro de outro método.

V

O Vector v estará disponivel sim, pois ele foi declarado no construtor, por ex na hora que a main instanciou um objeto da classe Cadastro o construtor é chamado e ele instancia o Vector v.

Mudei, mas dá na mesma.

Código:

import java.util.Vector; 
public class Cadastro 
{ 
  private Vector v; 
  public Cadastro() 
  { 
     v=new Vector(); 
  } 
  public void adicionar(String str) 
  { 
     v.add(str); 
  } 
}

Falow

Rafael_Steil

oooppss… ele nao vai estar disponivel, pois eh declarado dentro do construtor, e nao como membro da classe, como vc fez no ultimo exemplo. Ou seja, nao daria na mesma ambos os codigos :wink:

Rafael

Criado 1 de abril de 2004
Ultima resposta 1 de abr. de 2004
Respostas 12
Participantes 4