Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - reygecko

#1
Java / Duda general sobre 'static'
18 Enero 2013, 11:23 AM
No sé ni cómo empezar a plantear esta duda.  Espero explicarme...

Estoy haciendo un programa y lo tengo bastante avanzado, ocupa casi 400 líneas.  El caso es que para ese programa definí una clase (llamémosla X) para poder crear registros que tuvieran varios campos, unos cuantos numéricos y otro de tipo matriz.

Pues bien, el problema me surge cuando intento hacer un ArrayList con distintos registros de esa clase X.  Esa lista la genera un método y ocurre que todos los elementos de esa lista son iguales, aunque no deberían serlo.

Según creo, eso ocurre porque definí la clase X como 'static' y, entonces, al generarse varios elementos de esa clase, se generan todos igual (si no es así, por favor corregidme).  Pero si elimino el 'static', entonces esa clase no puede ser usada por los métodos, ya que también son 'static'.  Y si elimino el 'static' de todos los métodos, entonces no pueden ser usadas por el programa main, que tiene que ser 'static' obligatoriamente.

No sé, estoy muy perdido con esto.  :-\  ¿Algún consejo?  Gracias de antemano.
#2
Java / Duda sobre el método get
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:


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.
#3
Hola a todos. :D

Agradecería mucho que alguien me dijera cómo se puede ordenar un ArrayList formado por registros de varios campos.  Es decir, si uno de esos campos es numérico, cómo se podría ordenar ese ArrayList para que los elementos estén ordenados de menor a mayor según ese campo numérico. 

Mi ejemplo:


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();

        // Doy valores al registro 01

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

        // Doy valores al registro 02

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

        //Añado ambos elementos a la lista

        lista.add(0,registro01);
        lista.add(1,registro02);
    }
   
}


Haciéndolo así, el primer elemento del ArrayList sería 'registro01' y el segundo elemento sería 'registro02'.

Pues bien, la pregunta es ¿cómo se podrían ordenar de menor a mayor (según el campo registro.numero) los 2 registros que forman el ArrayList? ¿Existe algún método predefinido que lo haga?  ¿Y para ordenarlos según, por ejemplo, el valor del elemento (0,0) de las matrices? Yo no doy con ello...  :huh:

Muchas gracias de antemano y saludos.
#4
Java / Cómo imprimir una lista de vectores
7 Enero 2013, 21:19 PM
Pues eso, no soy capaz de encontrar la manera de imprimir una lista de vectores.  Tengo este código:


List<int[]> candidatos = new ArrayList<int[]>();
candidatos.add(new int[]{3, 4, 5});
candidatos.add(new int[]{23,2,1});
Collections.sort(candidatos, new OrdenarNumeros());
System.out.println("Vectores ordenados: " + candidatos);


Y querría que me mostrase el contenido de los vectores de la lista "candidatos", pero sólo obtengo sus direcciones de memoria:


run:
Vectores ordenados: [[I@2f3cf887, [I@4be07f4b]
BUILD SUCCESSFUL (total time: 0 seconds)


¿Alguien me podría ayudar, por favor?
#5
Java / Información sobre variables
30 Diciembre 2012, 21:15 PM
Hola a todos.

Para no aburrir con preguntas triviales, agradecería que alguien me indicase un PDF/web/loquesea donde yo pueda empaparme bien del significado de los modificadores de las variables, de las clases y de los métodos (static, public, private, etc)

He estado leyendo algún manual sobre el tema, pero (en mi modestísima opinión) no ilustran bien lo que dicen con ejemplos donde se pueda comprobar "sobre el terreno" las consecuencias de usar un modificador u otro.

Por eso, si alguien pudiera recomendarme algún PDF, web o cualquier otra cosa sobre este tema, pero que venga BIEN ACOMPAÑADA DE EJEMPLOS, lo agradecería mucho.

Gracias por adelantado.  :)
#6
Java / Problema inicializando una variable
29 Diciembre 2012, 23:29 PM
Hola a todos.  :)

He definido una clase de este modo:

static class ensayo {        
       int ultimaPos[] = new int [2]; // Vector con las coordenadas (x,y) de la última posición del caballo.
       int tablero[][] = new int[Escenario.valorN][Escenario.valorN]; // Matriz con la posición del tablero.
       int numMov = 1;      // Contador con el número total de movimientos efectuados.
   }


Y luego intento inicializar sus valores dentro de main con este código:

ensayo prueba;
prueba.ultimaPos[0] = Escenario.valorX;
prueba.ultimaPos[1] = Escenario.valorY;


Debo estar haciendo algo mal porque me da el siguiente error al compilar:

Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - variable prueba might not have been initialized
at Practica.main(Practica.java:254)


Esa línea del error coincide con "prueba.ultimaPos[0] = Escenario.valorX;".  

¿Podríais ayudarme a saber qué hago mal? Gracias por anticipado.
#7
Java / Matrices: ¿se pueden asignar?
27 Diciembre 2012, 14:18 PM
Seguramente estoy preguntando una tontería, pero he googleado en busca de respuestas y no he encontrado nada, así que ahí va mi pregunta:

¿Es posible duplicar una matriz bidimensional mediante una asignación (por ejemplo, del tipo matriz1 = matriz2) o es necesario copiar uno a uno todos sus valores de una matriz a otra?

No sé si queda claro lo que estoy preguntando, espero que sí. 
#8
Java / Un booleano no me respeta
23 Diciembre 2012, 15:13 PM
Buenos días a todos.

Los booleanos deberían ser sencillos, sólo pueden valer "true" o "false". Pues me están volviendo loco.  :huh:

Con este programa tan sencillo, pretendo comprobar el valor de una variable booleana:

public class booleano {
    public static void main(String args[]) {
        boolean condicion = false;
        if (condicion = false)
            System.out.println("CONDICIÓN VALE FALSE");
        if (condicion = true)
            System.out.println("CONDICIÓN VALE TRUE");
    }
}


Pues bien, aunque yo mismo inicializo la variable "condicion" con el valor "FALSE", sin embargo el resultado que obtengo al ejecutar el programa es "CONDICIÓN VALE TRUE".

Por favor, ¿podría alguien ser tan amable de explicarme qué estoy haciendo mal? Muchas gracias.
#9
Java / Duda sobre argumentos para main
20 Diciembre 2012, 21:01 PM
Hola a todos.  :)

Recién llegado al mundo de Java, estoy constantemente leyendo cosas y aprendiendo. Sin embargo quizá no leo en los sitios adecuados porque me encuentro con problemas que deberían ser muy sencillos y no sé cómo afrontarlos.

Quiero hacer un programa al que se le pasen unos argumentos iniciales, por ejemplo, que sea invocado con "java Programa -a -b -c" y que detecte cuándo se le pasan esos argumentos y cuándo no. Para eso empecé con este código que pretende detectar el primer argumento:

public class Programa {
   public static void main (String args[]) {
      System.out.println();
      if (args[0] == "-a") {
         System.out.println("El primer parámetro es correcto");
      }
      else {
         System.out.println("No has introducido parámetro -a");
      }
   }
}


Pues bien, invocando este programa con "java Programa -a" obtengo la respuesta "No has introducido parámetro -a".

Por favor, que alguien me saque de mi rebuznante ignorancia, lo suplico...