Duda sobre el método get

Iniciado por reygecko, 16 Enero 2013, 23:14 PM

0 Miembros y 1 Visitante están viendo este tema.

reygecko

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:


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:


El primer registro es: registro03
El segundo registro es: registro03
El tercer registro es: registro03


¿Alguna sugerencia? Muchas gracias de antemano.

[Case]

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.

reygecko

Esto de los modificadores de las variables me vuelve loco...  :rolleyes:

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