Foro de elhacker.net

Programación => Java => Mensaje iniciado por: reygecko en 16 Enero 2013, 23:14 pm



Título: Duda sobre el método get
Publicado por: reygecko en 16 Enero 2013, 23:14 pm
No consigo que 'get' me devuelva el valor correcto.  Debe ser sencillo, pero no sé qué pasa y me está volviendo loco.

Éste es el código:

Código:
import java.util.*;

public class Orden {

    static class Registro {

        static String texto;
        static int numero;
        static int matriz[][] = new int[2][2];
    }

    public static void main(String[] args) {
        List<Registro> lista = new ArrayList<>();
        Registro registro01 = new Registro();
        Registro registro02 = new Registro();
        Registro registro03 = new Registro();
        Registro test = new Registro();

        // Doy valores al registro 01

        registro01.matriz[0][0] = 1;
        registro01.matriz[0][1] = 1;
        registro01.matriz[1][0] = 1;
        registro01.matriz[0][1] = 1;
        registro01.texto = "registro01";
        registro01.numero = 1;

        // Doy valores al registro 02

        registro02.matriz[0][0] = 2;
        registro02.matriz[0][0] = 2;
        registro02.matriz[0][0] = 2;
        registro02.matriz[0][0] = 2;
        registro02.texto = "registro02";
        registro02.numero = 2;

        // Doy valores al registro 03

        registro03.matriz[0][0] = 3;
        registro03.matriz[0][0] = 3;
        registro03.matriz[0][0] = 3;
        registro03.matriz[0][0] = 3;
        registro03.texto = "registro03";
        registro03.numero = 3;

        //Añado todos los elementos a la lista

        lista.add(registro01);
        lista.add(registro02);
        lista.add(registro03);
       
        test = lista.get(0);
        System.out.println("El primer registro es: " + test.texto);
        test = lista.get(1);
        System.out.println("El segundo registro es: " + test.texto);
        test = lista.get(2);
        System.out.println("El tercer registro es: " + test.texto);

    }
}

Pues la salida que produce es (para mi desesperación  :-() ésta:

Código:
El primer registro es: registro03
El segundo registro es: registro03
El tercer registro es: registro03

¿Alguna sugerencia? Muchas gracias de antemano.


Título: Re: Duda sobre el método get
Publicado por: [Case] en 16 Enero 2013, 23:33 pm
Cuando tu declaras una clase o una variable static, le indicas al compilador que solamente debe de exisitir un objeto o una variable. Por lo que en este caso, al modificar la variable, modificas una variable global para todos los objetos de tipo Registro.
Simplemente quitale la declarasion static al principo de las variables de la clase Registro, y funcionara tu codigo.


Título: Re: Duda sobre el método get
Publicado por: reygecko en 16 Enero 2013, 23:49 pm
Esto de los modificadores de las variables me vuelve loco...  :rolleyes:

Muchas gracias [Case], de veras. ;-)