Saída imprevista

oas…
Tou a tentar testar a classse Vector mas estou com uma saida no programa que era a que não queria, vamos ver se me podem ajudar pq não estoua ver onde esta o erro.

package vector;

public class Ponto
{
    public int x, y;

    public Ponto(int x, int y)
    {
        this.x=x;
        this.y=y;
    }
   
} 

Depois tenho a classe testePonto:

package vector;

import java.util.Vector;

public class testePonto
{
    public static void main(String[] args)
    {
        Vector v = new Vector();
        v.addElement(new Ponto(2,3));
        System.out.println(v.elementAt(0));
       

    }
} 

Saída:

vector.Ponto@1ac04e8

é de por os cabelos em pé, estas duvidas de iniciante :slight_smile:

Pelo que eu entendi você está colocando um objeto da classe Ponto no vetor. O método elementAt() retorna um objeto.

No caso você teria que fazer assim:

System.out.println(((Ponto)v.elementAt(0)).x);
System.out.println(((Ponto)v.elementAt(0)).y);

Você tem que fazer um cast para Ponto, e então acessar seus atributos.

Quando você chama System.out.println em um objeto, o que vai para a saída padrão é o resultado do método toString() deste objeto.

Como em sua classe Ponto você não sobrescreveu o método toString() de Object, a saída é o nome qualificado da classe + @ + o resultado do método hashCode() convertido para uma String hexadecimal, como pode ser visto em http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString() .

Uma solução possível para o seu caso é, em sua classe Ponto, você sobrescrever o método equals(). Por exemplo:

    public String toString() {
        return "Ponto em " + x + " e " + y;
    }

Outra coisa, a classe Vector tem todos os seus métodos sincronizados, o que gera uma certa lentidão. O ideal é substituir o uso dela por um objeto da classe ArrayList ou LinkedList ( http://java.sun.com/j2se/1.5.0/docs/api/java/util/ArrayList.html e http://java.sun.com/j2se/1.5.0/docs/api/java/util/LinkedList.html , respectivamente ). Caso você pretenda manipular sua Collection em várias threads diferentes, prefira usar o método Collections.synchronizedList ( http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collections.html#synchronizedList(java.util.List) ).