[Hilo Oficial II] Java

Muchas gracias a los 2. Ha quedado bastante claro. Voy a probar.

Editado:

Como lo veis asi:

double division = (double) (((ancho * alto) / 10.0) + 0.5);
int numBarcos = (int) division;

O hay una forma mejor de hacerlo? Funcionar funciona.
frekency escribió:No estoy seguro pero al final consegui que diera 5.0 haciendo esto

double division = (double)(7*7)/10; //4.9
System.out.println(division);
double numBarcos = (int)(division+0.5); //5.4 // Redondeado 5.0
System.out.println(numBarcos);

Y con esto le quitaba el .0
int finalBarcos=(int) (numBarcos/1); // 5

Reconozco que esto me ha pillado por sorpresa, se que esto me salio una vez y lo solucione puede que de alguna forma mas facil con algun metodo o algo.

Puede que la vez anterior lo hicieras con round.

round

public static int round(float a)

Returns the closest int to the argument. The result is rounded to an integer by adding 1/2, taking the floor of the result, and casting the result to type int. In other words, the result is equal to the value of the expression:

(int)Math.floor(a + 0.5f)

Special cases:

* If the argument is NaN, the result is 0.
* If the argument is negative infinity or any value less than or equal to the value of Integer.MIN_VALUE, the result is equal to the value of Integer.MIN_VALUE.
* If the argument is positive infinity or any value greater than or equal to the value of Integer.MAX_VALUE, the result is equal to the value of Integer.MAX_VALUE.

Parameters:
a - a floating-point value to be rounded to an integer.
Returns:
the value of the argument rounded to the nearest int value.
Duqe escribió:Muchas gracias a los 2. Ha quedado bastante claro. Voy a probar.

Editado:

Como lo veis asi:

double division = (double) (((ancho * alto) / 10.0) + 0.5);
int numBarcos = (int) division;

O hay una forma mejor de hacerlo? Funcionar funciona.


Hombre, funcionar funciona pero es un poco cutre :P

Lo suyo sería hacer el redondeo de forma explícita sin sumarle ahí 0.5

int numBarcos = (int) Math.ceil((double)ancho * alto / 10);

(en el momento en que cualquier nº de una operación matemática es double, el resultado se castea a double automáticamente)
Anda yo pensaba que sumarle 0.5 era obligatorio xDD

Me pasa por no leer bien.
redscare escribió:
Duqe escribió:Muchas gracias a los 2. Ha quedado bastante claro. Voy a probar.

Editado:

Como lo veis asi:

double division = (double) (((ancho * alto) / 10.0) + 0.5);
int numBarcos = (int) division;

O hay una forma mejor de hacerlo? Funcionar funciona.


Hombre, funcionar funciona pero es un poco cutre :P

Lo suyo sería hacer el redondeo de forma explícita sin sumarle ahí 0.5

int numBarcos = (int) Math.ceil((double)ancho * alto / 10);

(en el momento en que cualquier nº de una operación matemática es double, el resultado se castea a double automáticamente)

No me sirve. Si lo hago asi y ancho y alto son 9 y 9, numBarcos vale 9. Segun leo aqui:

http://www.adrformacion.com/cursos/java ... ial10.html

Me redondeara al siguiente numero entero si el valor tiene algun decimal. Yo lo que quiero es que si el valor decimal es igual o mayor a 0.5 me lo redondee al siguien valor entero. Si es inferior a 0.5, me lo redondee al anterior valor entero.
tu buscas esto:

static double rint(double num): devuelve el double-entero redondeado y asociado al argumento que se le pasa, tomando como cifra base para el redondeo, la primera después de la coma del argumento, y siguiendo los criterios habituales de redondeo
NOTA: si la cifra base para el redondeo es mayor o igual que 5, se aumenta en una unidad la cifra anterior; si la cifra base es menor que 5, no se modifica la cifra anterior.
Si se quiere redondear a partir de una determinada cifra decimal, se multiplicará por la potencia de 10 que corresponda, se aplicará el método y, después, se dividirá entre la potencia de 10 por la que anteriormente se ha multiplicado.

Ejemplo:

System.out.println(Math.rint(0.891));// muestra por consola 1.0

Si se quisiera aproximar a dos decimales:

System.out.println(Math.rint(0.891*100)/100);// muestra por consola 0.89
Duqe escribió:No me sirve. Si lo hago asi y ancho y alto son 9 y 9, numBarcos vale 9. Segun leo aqui:

http://www.adrformacion.com/cursos/java ... ial10.html

Me redondeara al siguiente numero entero si el valor tiene algun decimal. Yo lo que quiero es que si el valor decimal es igual o mayor a 0.5 me lo redondee al siguien valor entero. Si es inferior a 0.5, me lo redondee al anterior valor entero.


Es que creía que era eso lo que querías XD (esto me pasa por leer los posts en diagonal :P)

Usa Math.rint como dice Tanke :)
Mmm, pues algo falla. Por que con esto:

double numBarcos = Math.rint((ancho * alto) / 10);

numBarcos = 4.
Duqe escribió:Mmm, pues algo falla. Por que con esto:

double numBarcos = Math.rint((ancho * alto) / 10);

numBarcos = 4.


Estamos en las mismas de antes....ancho y alto son double o son int? divide entre 10.0 a ser posible (si es double) o 10.0f si es float. Por si son int, estamos en aquello de 7 x 7 = 49 (int) y dividido entre 10 = 4, y redondeando un 4.....sale 4.

Hazlo todo en numeros reales.

Por cierto, si numBarcos va a ser "entero" declarala como int, no como double.
Ya esta. Simplemente dividiendo por 10.0 se soluciono. Muchas gracias otra vez. jeje
Para el tema de redondeos al alza con decimales, recomiendo usar objetos de tipo BigDecimal, tiene sus propios métodos para hacer operaciones y en ellos le indicas por constante de la clase si quieres que redondee al alza a la baja, etc... Mirar documentación por google http://download.oracle.com/javase/1.4.2 ... cimal.html, no tiene mucho misterio, tienes controlada la precisión y funciona perfect ; )

Luego tiene un método propio que pasa el valor a un double una vez hecha la operación por si querieres igualar a ese tipo de dato.

Un saludo.
Yakerton está baneado por "Troll"
Hace un rato el ordenador me dejo de funcionar bien y no podia entrar en internet por mas que quisiera y varias cosas mas, asi que he tenido que restaurar el sistema.

Todo bien excepto una cosa, tengo problemas con java.


He intentado iniciar el jdowloader y me ha saltado una ventanita diciendo noseque de java no exist.
Me he descargado la ultima version se java pero vamos ya tenia la ultima asi que nada.
He ido al panel de control y he desinstalado java, me he descargado despues desde java la update 6 vamos la ultima y me sale esto Imagen
He entrado donde me dice y he borrado el archivo pero nada, sigue sin ir.

¿ayuda?

uso win 7 32 bit.
Yakerton escribió:Hace un rato el ordenador me dejo de funcionar bien y no podia entrar en internet por mas que quisiera y varias cosas mas, asi que he tenido que restaurar el sistema.

Todo bien excepto una cosa, tengo problemas con java.


He intentado iniciar el jdowloader y me ha saltado una ventanita diciendo noseque de java no exist.
Me he descargado la ultima version se java pero vamos ya tenia la ultima asi que nada.
He ido al panel de control y he desinstalado java, me he descargado despues desde java la update 6 vamos la ultima y me sale esto Imagen
He entrado donde me dice y he borrado el archivo pero nada, sigue sin ir.

¿ayuda?

uso win 7 32 bit.

Bueno, no se si es el hilo más adecuado ya que se suele tratar la programación en dicho lenguaje. Pero a fin de cuentas te está dicendo que el propio instalador está corrupto. Prueba a volver a descargarlo.
Estoy probando con hibernate pero al intentar cargar el archivo de mapeo me sale la excepcion .org.hibernate.MappingNotFoundException
si el package se llama ejemplohibernate y el proyecto ejemploHibernate (solo cambia la h mayuscula) como quedaria la linea de mapping resource de archivo .cfg.xml? probé con
<mapping resource="ejemploHibernate/ejemplohibernate/Event.hbm.xml" />

alguien me sabria decir que tengo mal?
Ya estoy por aquí con otra duda [+risas]

Esta vez tengo que crear un formulario HTML (muy sencillo, un campo de texto y un botón para enviar) que la primera vez que se use llame a un servlet (el cual busca en una BBDD lo tecleado y devuelve las coincidencias) y la segunda vez y posteriores llame a otro servlet diferente. Tengo todo creado y funcionando perfectamente, pero no se me ocurre como hacer para que llame a uno u otro servlet ya que como requisito no puedo utilizar sesiones. El formulario tiene que ser en HTML, nada de JSP ni otras alternativas.

¿Alguna idea?
zaius5 escribió:Estoy probando con hibernate pero al intentar cargar el archivo de mapeo me sale la excepcion .org.hibernate.MappingNotFoundException
si el package se llama ejemplohibernate y el proyecto ejemploHibernate (solo cambia la h mayuscula) como quedaria la linea de mapping resource de archivo .cfg.xml? probé con
<mapping resource="ejemploHibernate/ejemplohibernate/Event.hbm.xml" />

alguien me sabria decir que tengo mal?


no se si estás usando eclipse, netbeans....bueno, intenta meter ese fichero hibernate.cfg.xml en el paquete por defecto del proyecto, y intenta arrancar hibernate de este modo, si ves que sigue petando, intenta poner las rutas absolutas de los ficheros de recursos, y si sigue sin ir...problema de rutas no será. Ya nos cuentas.
Nagaroth escribió:Ya estoy por aquí con otra duda [+risas]

Esta vez tengo que crear un formulario HTML (muy sencillo, un campo de texto y un botón para enviar) que la primera vez que se use llame a un servlet (el cual busca en una BBDD lo tecleado y devuelve las coincidencias) y la segunda vez y posteriores llame a otro servlet diferente. Tengo todo creado y funcionando perfectamente, pero no se me ocurre como hacer para que llame a uno u otro servlet ya que como requisito no puedo utilizar sesiones. El formulario tiene que ser en HTML, nada de JSP ni otras alternativas.

¿Alguna idea?

Si puedes utilizar php no hay problema. Un if bien majo y listo.
Nagaroth escribió:Ya estoy por aquí con otra duda [+risas]

Esta vez tengo que crear un formulario HTML (muy sencillo, un campo de texto y un botón para enviar) que la primera vez que se use llame a un servlet (el cual busca en una BBDD lo tecleado y devuelve las coincidencias) y la segunda vez y posteriores llame a otro servlet diferente. Tengo todo creado y funcionando perfectamente, pero no se me ocurre como hacer para que llame a uno u otro servlet ya que como requisito no puedo utilizar sesiones. El formulario tiene que ser en HTML, nada de JSP ni otras alternativas.

¿Alguna idea?


Es que HTML no está pensado para estos menesteres, únicamente mostrar contenido y para ahi, tal vez enviar algún dato mediante un form....sino puedes usar asp.net, jsp, php o cualquier otro sinceramente no se como te lo vas a currar, si usas algun lenguajes de los nombrados, creo que todos o la mayoría tiene un atributo o función que indica si la pagina ha sido recargada y así ya podrías diferenciar.
rintin escribió:
Nagaroth escribió:Ya estoy por aquí con otra duda [+risas]

Esta vez tengo que crear un formulario HTML (muy sencillo, un campo de texto y un botón para enviar) que la primera vez que se use llame a un servlet (el cual busca en una BBDD lo tecleado y devuelve las coincidencias) y la segunda vez y posteriores llame a otro servlet diferente. Tengo todo creado y funcionando perfectamente, pero no se me ocurre como hacer para que llame a uno u otro servlet ya que como requisito no puedo utilizar sesiones. El formulario tiene que ser en HTML, nada de JSP ni otras alternativas.

¿Alguna idea?

Si puedes utilizar php no hay problema. Un if bien majo y listo.


En todo caso lo único que podría usar es Javascript, pero no me queda claro como controlarlo de todos modos. Al final he optado por hacer un response.sendRedirect en el primer servlet llamando al segundo usando un contador, aunque no estoy muy seguro de que sea lo que me piden :-?

Gracias a todos por la ayuda
(mensaje borrado)
Vereis, el problema que tengo es el siguiente. Copiado literalmente del subforo de pruebas.

Bueno, hace unos dias abri un hilo en el que estaba haciendo un programa para generar codigos hexadecimales de x cifras. Pues bien, el programa lo tengo terminado, y cuando voy a ejecutarlo desde bluej lo hace a las mil maravillas, pero cuando creo el jar, y lo ejecuto, este se pone en marcha, pero yo no intervengo para nada ( En teoria me debe preguntar cuantas cifras tiene el codigo, y el solo lo genera ) y me crea un resultados.txt en blanco.

Aqui os dejo el codigo:
    import java.util.*;
    import java.io.PrintStream;
    import java.util.logging.Level;
    import java.util.logging.Logger;

    public class generador {

        static Scanner miscaner = new Scanner(System.in);
        static int x;
        static char pant;

        public static void main(String[] args) {
            PrintStream DDescriptor = null;
            try {
                DDescriptor = new PrintStream("Resultados.txt");
                System.out.println("Hola, bienvenido al programa generador de codigos hexadecimal");
                System.out.print("Por favor, indique de cuantas cifras es el codigo que quereis generar: ");
                x = miscaner.nextInt();
                //System.out.print("¿¿Deseas ver los resultados en pantalla?? [Y/N]: ");
                //char pant = (char) System.in.read();
                for (int i = 0; i < Math.pow(16, x); i++) {
                    String aux = Integer.toHexString(i).toString();
                    if (aux.length() < x) {
                        for (int j = aux.length(); j < x; j++) {
                            aux = "0".concat(aux);
                        }
                    }
                    DDescriptor.println(aux.toUpperCase());
                    //System.out.println(aux.toUpperCase());
                }
            } catch (Exception ex) {
                Logger.getLogger(generador.class.getName()).log(Level.SEVERE, null, ex);
            } finally {
                DDescriptor.close();
                System.out.print( "Fichero Resultados.txt generado.");
           
            }
        }
    }



Y os subo tambien el .class para ver si alguien me puede echar una mano.

Muchas Gracias

El programa en cuestion hace lo siguiente. Te crea todos los codigos hexadecimales posibles de X cifras, dandole tu el valor X.

Adjuntos

generador.rar (1.3 KB)

Generador.class
sostaco escribió:Vereis, el problema que tengo es el siguiente. Copiado literalmente del subforo de pruebas.

Bueno, hace unos dias abri un hilo en el que estaba haciendo un programa para generar codigos hexadecimales de x cifras. Pues bien, el programa lo tengo terminado, y cuando voy a ejecutarlo desde bluej lo hace a las mil maravillas, pero cuando creo el jar, y lo ejecuto, este se pone en marcha, pero yo no intervengo para nada ( En teoria me debe preguntar cuantas cifras tiene el codigo, y el solo lo genera ) y me crea un resultados.txt en blanco.

Aqui os dejo el codigo:
    import java.util.*;
    import java.io.PrintStream;
    import java.util.logging.Level;
    import java.util.logging.Logger;

    public class generador {

        static Scanner miscaner = new Scanner(System.in);
        static int x;
        static char pant;

        public static void main(String[] args) {
            PrintStream DDescriptor = null;
            try {
                DDescriptor = new PrintStream("Resultados.txt");
                System.out.println("Hola, bienvenido al programa generador de codigos hexadecimal");
                System.out.print("Por favor, indique de cuantas cifras es el codigo que quereis generar: ");
                x = miscaner.nextInt();
                //System.out.print("¿¿Deseas ver los resultados en pantalla?? [Y/N]: ");
                //char pant = (char) System.in.read();
                for (int i = 0; i < Math.pow(16, x); i++) {
                    String aux = Integer.toHexString(i).toString();
                    if (aux.length() < x) {
                        for (int j = aux.length(); j < x; j++) {
                            aux = "0".concat(aux);
                        }
                    }
                    DDescriptor.println(aux.toUpperCase());
                    //System.out.println(aux.toUpperCase());
                }
            } catch (Exception ex) {
                Logger.getLogger(generador.class.getName()).log(Level.SEVERE, null, ex);
            } finally {
                DDescriptor.close();
                System.out.print( "Fichero Resultados.txt generado.");
           
            }
        }
    }



Y os subo tambien el .class para ver si alguien me puede echar una mano.

Muchas Gracias

El programa en cuestion hace lo siguiente. Te crea todos los codigos hexadecimales posibles de X cifras, dandole tu el valor X.


Una pregunta absurda (teniendo en cuenta que no suelo programar Java por línea de comandos, normalmente hago una interfaz gráfica o vía web, pero bueno...) ¿Como te aseguras que se queda esperando a que el usuario ha introducido el número que le pides?

x = miscaner.nextInt();


¿Se queda esperando en esa línea hasta que recoge algo?
Yo creo que ejecuta todo el programa sin esperar a que le llegue un carácter. ¿Has probado a mostrar en pantalla el valor de "x" después de recogerlo?. Algo así:

x = miscaner.nextInt();
System.out.println("Has introducido: "+x);


Así sabrás si se queda esperando o no.

Espero que te sirva.

Saludos!
mrm_arrasate escribió:
sostaco escribió:
Vereis, el problema que tengo es el siguiente. Copiado literalmente del subforo de pruebas.

Bueno, hace unos dias abri un hilo en el que estaba haciendo un programa para generar codigos hexadecimales de x cifras. Pues bien, el programa lo tengo terminado, y cuando voy a ejecutarlo desde bluej lo hace a las mil maravillas, pero cuando creo el jar, y lo ejecuto, este se pone en marcha, pero yo no intervengo para nada ( En teoria me debe preguntar cuantas cifras tiene el codigo, y el solo lo genera ) y me crea un resultados.txt en blanco.

Aqui os dejo el codigo:
    import java.util.*;
    import java.io.PrintStream;
    import java.util.logging.Level;
    import java.util.logging.Logger;

    public class generador {

        static Scanner miscaner = new Scanner(System.in);
        static int x;
        static char pant;

        public static void main(String[] args) {
            PrintStream DDescriptor = null;
            try {
                DDescriptor = new PrintStream("Resultados.txt");
                System.out.println("Hola, bienvenido al programa generador de codigos hexadecimal");
                System.out.print("Por favor, indique de cuantas cifras es el codigo que quereis generar: ");
                x = miscaner.nextInt();
                //System.out.print("¿¿Deseas ver los resultados en pantalla?? [Y/N]: ");
                //char pant = (char) System.in.read();
                for (int i = 0; i < Math.pow(16, x); i++) {
                    String aux = Integer.toHexString(i).toString();
                    if (aux.length() < x) {
                        for (int j = aux.length(); j < x; j++) {
                            aux = "0".concat(aux);
                        }
                    }
                    DDescriptor.println(aux.toUpperCase());
                    //System.out.println(aux.toUpperCase());
                }
            } catch (Exception ex) {
                Logger.getLogger(generador.class.getName()).log(Level.SEVERE, null, ex);
            } finally {
                DDescriptor.close();
                System.out.print( "Fichero Resultados.txt generado.");
           
            }
        }
    }



Y os subo tambien el .class para ver si alguien me puede echar una mano.

Muchas Gracias

El programa en cuestion hace lo siguiente. Te crea todos los codigos hexadecimales posibles de X cifras, dandole tu el valor X.


Una pregunta absurda (teniendo en cuenta que no suelo programar Java por línea de comandos, normalmente hago una interfaz gráfica o vía web, pero bueno...) ¿Como te aseguras que se queda esperando a que el usuario ha introducido el número que le pides?

x = miscaner.nextInt();


¿Se queda esperando en esa línea hasta que recoge algo?
Yo creo que ejecuta todo el programa sin esperar a que le llegue un carácter. ¿Has probado a mostrar en pantalla el valor de "x" después de recogerlo?. Algo así:

x = miscaner.nextInt();
System.out.println("Has introducido: "+x);


Así sabrás si se queda esperando o no.

Espero que te sirva.

Saludos!

Se queda esperando, porque hago un print ( en lugar de un println, que incluye salto de linea ) y dejo un espacio en blanco, para que el usuario meta el numero que el quiera. Y se que funciona porque si desde bluej ejecuto el public static void main, en lugar de ejecutar la class generador, funciona perfectamente, me pide el numero de cifras y genera el txt, todo perfecto.
sostaco escribió:Vereis, el problema que tengo es el siguiente. Copiado literalmente del subforo de pruebas.

Bueno, hace unos dias abri un hilo en el que estaba haciendo un programa para generar codigos hexadecimales de x cifras. Pues bien, el programa lo tengo terminado, y cuando voy a ejecutarlo desde bluej lo hace a las mil maravillas, pero cuando creo el jar, y lo ejecuto, este se pone en marcha, pero yo no intervengo para nada ( En teoria me debe preguntar cuantas cifras tiene el codigo, y el solo lo genera ) y me crea un resultados.txt en blanco.

Aqui os dejo el codigo:
    import java.util.*;
    import java.io.PrintStream;
    import java.util.logging.Level;
    import java.util.logging.Logger;

    public class generador {

        static Scanner miscaner = new Scanner(System.in);
        static int x;
        static char pant;

        public static void main(String[] args) {
            PrintStream DDescriptor = null;
            try {
                DDescriptor = new PrintStream("Resultados.txt");
                System.out.println("Hola, bienvenido al programa generador de codigos hexadecimal");
                System.out.print("Por favor, indique de cuantas cifras es el codigo que quereis generar: ");
                x = miscaner.nextInt();
                //System.out.print("¿¿Deseas ver los resultados en pantalla?? [Y/N]: ");
                //char pant = (char) System.in.read();
                for (int i = 0; i < Math.pow(16, x); i++) {
                    String aux = Integer.toHexString(i).toString();
                    if (aux.length() < x) {
                        for (int j = aux.length(); j < x; j++) {
                            aux = "0".concat(aux);
                        }
                    }
                    DDescriptor.println(aux.toUpperCase());
                    //System.out.println(aux.toUpperCase());
                }
            } catch (Exception ex) {
                Logger.getLogger(generador.class.getName()).log(Level.SEVERE, null, ex);
            } finally {
                DDescriptor.close();
                System.out.print( "Fichero Resultados.txt generado.");
           
            }
        }
    }



Y os subo tambien el .class para ver si alguien me puede echar una mano.

Muchas Gracias

El programa en cuestion hace lo siguiente. Te crea todos los codigos hexadecimales posibles de X cifras, dandole tu el valor X.



He leído BlueJ y pensé "La misma mierda de IDE que usé en primero en la UPV" y al ver tu procedencia lo entendí xD
Hola, necesito ayuda con un programa. Estoy intentando hacer un simulador de algoritmos de planificacion de procesos en Java con Netbeans. Pero no se como trabajar con tablas dinamicas y no se como introducir los datos de las tareas en la tabla y que esta vaya aumentando de filas. (Este es el primero de mis problemas).

¿Hay alguien en Córdoba (España) que domine esto y quiera dar algunas clases particulares? o si sabeis de alguna academia o algo x aki tambien me vale...

Saludos.
Guntharc escribió:Hola, necesito ayuda con un programa. Estoy intentando hacer un simulador de algoritmos de planificacion de procesos en Java con Netbeans. Pero no se como trabajar con tablas dinamicas y no se como introducir los datos de las tareas en la tabla y que esta vaya aumentando de filas. (Este es el primero de mis problemas).

¿Hay alguien en Córdoba (España) que domine esto y quiera dar algunas clases particulares? o si sabeis de alguna academia o algo x aki tambien me vale...

Saludos.


¿Has probado a usar ArrayList? Y simular las tablas con esto, te ahorras tener que estar pendiente del redimensionamiento de estas. Tambien puedes intentar tener Arrays "tipicos" e ir creando nuevos y copiando el contenido...pero no se como será eso de eficiente.
Tanke2K2 escribió:
Guntharc escribió:Hola, necesito ayuda con un programa. Estoy intentando hacer un simulador de algoritmos de planificacion de procesos en Java con Netbeans. Pero no se como trabajar con tablas dinamicas y no se como introducir los datos de las tareas en la tabla y que esta vaya aumentando de filas. (Este es el primero de mis problemas).

¿Hay alguien en Córdoba (España) que domine esto y quiera dar algunas clases particulares? o si sabeis de alguna academia o algo x aki tambien me vale...

Saludos.


¿Has probado a usar ArrayList? Y simular las tablas con esto, te ahorras tener que estar pendiente del redimensionamiento de estas. Tambien puedes intentar tener Arrays "tipicos" e ir creando nuevos y copiando el contenido...pero no se como será eso de eficiente.


Totalmente de acuerdo con el compañero, los arraylist te serían muy útiles.

Saludos!
Hola,

Hace poco que he empezado un curso de iniciación de Java, pero en el manual que me dieron no explican muy bien los constructores, en otro hilo que cree pregunte sobre un ejercicio que no sabia hacer por que no se como funcionan los constructores. (sigo sin entenderlo muy bien)
Se la teoria pero no entiendo el funcionamiento, si alguien pudiera explicarmelo se lo agradeceria... en el ejercicio :
Lo que se me pide es lo siguiente:
-Desarrollar una clase llamada Alumno que:
Tenga tres atributos private de tipo Asignatura
Tenga un constructor con tres parametros de tipo Asignatura que inicialice los tres atributos.
Tenga un constructor con tres parametros de tipo int que inicialice los tres atributos.
Tenga un getter para cada uno de los atributos.


y hice ya una clase llamada Asignatura que no se si esta bien:
public class Asignatura {

   
      private int identificador;
      private double nota;
      
         public Asignatura(int param1){}
         
         public int getIdentificador()
         {
            return identificador;
         }
         public double getNota()
         {
            return nota;
            }
         public void setNota(double no)
         {
            nota = no;
         }
   }

en la otra estoy haciendo esto:
public class Alumno {

   private Asignatura Historia;
   private Asignatura Matematicas;
   private Asignatura Informatica;
   
   public Alumno(){
      Asignatura = new Historia();
      Asignatura = new Matematicas();
      Asignatura = new Informatica();
      
   }





}


A ver si alguien puede decirme lo que hago mal.

Gracias
Vamos a ver...lo primero es ¿que es un constructor? es la primera función que se ejecuta al crear una instancia de una clase. ¿Para que vale? habitualmente para iniciar las variables de dicha clase a valores que tu indiques explicitamente, o valores por defecto. Un constructor puede estar vacío y no tener ninguna instrucción, o puede tener llamadas a mil clases.....todo depende de la clase que estes programando...con el tiempo irás cogiendole el truquillo.

Lo segundo que tienes que distinguir es el tipo de una variable/objeto y el nombre de dicha variable objeto. Cuando instancias un objeto (como la clase Asignatura) la sintaxis es la siguiente:

TipoObjeto NombreObjeto = new TipoObjeto(parametros del constructor);

En tu caso seria esto:

public class Alumno {

   private Asignatura Historia;
   private Asignatura Matematicas;
   private Asignatura Informatica;
   
   public Alumno(){
      Historia = new Asignatura ();
      Matematicas = new Asignatura ();
      Informatica = new Asignatura ();
   }
}


ok? esta seria la sintaxis correcta, pero vamos a leer el enunciado de tu "practica". Tenga un constructor con tres parametros de tipo Asignatura que inicialice los tres atributos., de acuerdo, entonces tu constructor tendrá 3 parametros (imagino de tipo Asignatura) tal que asi:

public class Alumno {

   private Asignatura historia;
   private Asignatura matematicas;
   private Asignatura informatica;
   
   public Alumno(Asignatura historia, Asignatura matematicas, Asignatura informatica){
      this.historia = historia;
      this.matematicas = matematicas;
      this.informatica = informatica;
   }
}


de esta manera los objetos de la clase alumno, ya le llegan instanciados desde el constructor. Te comento dos cosillas, las variables van en minuscula, ¿porque?, simple convenio, se "llegó al acuerdo" de poner los nombres de las variables de las funciones en minuscula (la primera letra), y los objetos y clases van en mayuscula (la primera letra tambien), para poder distinguirlos facilmente. Si ves, te he modificado eso en tu codigo.

Tambien, no se si conoces la palabra reservada "this", se refiere a "esta clase", es decir, cuando pones this.historia, es como decir "el objeto historia, que está en esta clase", es util para evitar ambiguedades.

El segundo constructor te dejo que lo intentes tu XD y los getter son las funciones "get" que devuelven un valor/instancia de un objeto que tiene tu clase, como los que tienes en la clase Asignatura, seria hacer lo mismo pero con los objetos de la clase alumno, como:

   public Asignatura getHistoria(){
      return this.historia;
   }


Bueno, para que empieces a pillarle un poco de truco al asunto vale, si tienes mas dudas avisa ;)
Antes que nada muchísimas gracias, es que el curso que estoy haciendo es a distancia de los que llaman ITE, y la tutora no contesta a mis mails.

Creo que ahora me ha quedado bastante claro, aunque el "this" aun no lo concocía lo usaré igual. Luego edito el mensaje con el ejercicio completo a ver que tal.
Take2K2 gracias por explicarmelo de manera tan clara ;)
El "this" fuera de convenios de buen habla y buen explicar, y de primeras hace referencia a la variable que tienes en esa clase XD y la otra variable, aunque se llame igual hace referencia a algo que viene de fuera.

PD: Vale, veo que@Tanke2K2 lo ha explicado como yo, humm ;)

Por convenio se suele utilizar mucho estas nomenclaturas a la hora de hacer clases, pero para un novato creo que deberían poner nombres distintos a las variables, algo como así:

public Alumno(Asignatura varHistoriaOut, Asignatura varMatematicasOut, Asignatura varInformaticaOut){
     historia=varHistoriaOut;
............


   }
}


Al menos así lo hice yo cuando era nuevo en esto y no entendía bien muchas cosas. Si usas el Netbeans y le das a "generar constructor" verás que lo hace con el "this".

@sostaco, llevo días intentando ponerme a ver si doy con tu problema...soy más vago que el suelo :(
ByEs [buenazo]
A ver que tal esto:
public class Alumno {

   private Asignatura historia;
   private Asignatura matematicas;
   private Asignatura informatica;
   
   public Alumno(Asignatura historia, Asignatura matematicas, Asignatura informatica)
   {
      this.historia = new Asignatura();
      this.matematicas = new Asignatura();
      this.informatica = new Asignatura();
      
   }
   public Alumno (int a, int b, int c){
      this.a = new historia ();
      this.b = new matematicas ();
      this.c = new informatica();

   }
   public Asignatura getHistoria(){
      return this.historia;
   }
   public Asignatura getMatematicas(){
      return this.matematicas;
      
   }
   public Asignatura getInformatica(){
      return this.informatica;
      
   }
}


Gracias a bitman tambien por la ayuda ;)
lordvil escribió:A ver que tal esto:
public class Alumno {

   private Asignatura historia;
   private Asignatura matematicas;
   private Asignatura informatica;
   
   public Alumno(Asignatura historia, Asignatura matematicas, Asignatura informatica)
   {
      this.historia = new Asignatura();
      this.matematicas = new Asignatura();
      this.informatica = new Asignatura();
      
   }
   public Alumno (int a, int b, int c){
      this.a = new historia ();
      this.b = new matematicas ();
      this.c = new informatica();

   }
   public Asignatura getHistoria(){
      return this.historia;
   }
   public Asignatura getMatematicas(){
      return this.matematicas;
      
   }
   public Asignatura getInformatica(){
      return this.informatica;
      
   }
}


Gracias a bitman tambien por la ayuda ;)


Así está perfecto ;) Aunque no entiendo el sentido de que el constructor reciba 3 enteros e inicialize las variables, pero es cosa del enunciado, no tuya, el código está bien ^^
Gracias de verdad por vuestra ayuda, si tuviera una tutora como vosotros no tendria estos problemas.
Si en cualquier momento os molesta enseñarme esto, decirmelo que ya no os molesto mas.

La tercera parte es:
Desarrollar una clase llamada Profesor que:

Tenga un método ponerNotas que recibe un parámetro de tipo Alumno y que no devuelve nada. Pondrá una calificación aleatoria a cada una de las asignaturas del alumno.
Tenga un método calcularMedia que recibe un parámetro de tipo Alumno y devuelve un double.

y mi codigo (posiblemente erroneo):
public class Profesor {

   public ponerNotas (Alumno param ){
      Alumno.historia = Math.random();
      Alumno.matematicas = Math.random();
      Alumno.informatica = Math.random();
   }
   public double calcularMedia (){
      return (Alumno.historia + Alumno.matematicas + Alumno.informatica) /3;
   }
}


Si puede ser no me pongais la solucion, simplemente remarcar el error y como podria solucionarse ... Gracias, gracias de verdad.
lordvil escribió:Gracias de verdad por vuestra ayuda, si tuviera una tutora como vosotros no tendria estos problemas.
Si en cualquier momento os molesta enseñarme esto, decirmelo que ya no os molesto mas.

La tercera parte es:
Desarrollar una clase llamada Profesor que:

Tenga un método ponerNotas que recibe un parámetro de tipo Alumno y que no devuelve nada. Pondrá una calificación aleatoria a cada una de las asignaturas del alumno.
Tenga un método calcularMedia que recibe un parámetro de tipo Alumno y devuelve un double.

y mi codigo (posiblemente erroneo):
public class Profesor {

   public ponerNotas (Alumno param ){
      Alumno.historia = Math.random();
      Alumno.matematicas = Math.random();
      Alumno.informatica = Math.random();
   }
   public double calcularMedia (){
      return (Alumno.historia + Alumno.matematicas + Alumno.informatica) /3;
   }
}


Si puede ser no me pongais la solucion, simplemente remarcar el error y como podria solucionarse ... Gracias, gracias de verdad.


No molesta hombre, nadie nace sabido :)

El método de poner nota, te falta indicar que no devuelve nada (void) y acceder al campo de asignatura del alumno que has pasado, sería:

public void ponerNotas (Alumno param ){
      param.historia = Math.random();
      param.matematicas = Math.random();
      param.informatica = Math.random();
   }
Entonces el metodo de calcularMedia esta bien?
Una duda, si usamos "param.historia", como se sabe que historia es de la clase Alumno?
lordvil escribió:Entonces el metodo de calcularMedia esta bien?
Una duda, si usamos "param.historia", como se sabe que historia es de la clase Alumno?


Porque le estás indicando en el argumento que le estás pasando una variable de tipo Alumno llamada param. Si, el de la media está bien.

Saludos
Ahi va la ultima parte:
Desarrollar una clase llamada Actividad1 que en su método main:

Cree e inicialice tres Asignaturas.
Cree un Alumno con las tres Asignaturas.
Cree un Profesor que le ponga calificaciones al Alumno y muestre por pantalla la media del Alumno.


y mi codigo:
public class Actividad1 {

   public static void main(String[] args) {
      
      Asignatura historia = new Asignatura();
      Asignatura matematicas = new Asignatura();
      Asignatura informatica = new Asignatura();
   
      Alumno daniel = new Alumno();
      
      Profesor arancha = new Profesor();
      
      System.out.println("la nota de historia es:" +Alumno.historia);
      System.out.println("la nota de matematicas es:" +Alumno.matematicas);
      System.out.println("la nota de informatica es:" +Alumno.informatica);
      System.out.println("la media es:" +Profesor.calcularMedia);

   }

}


tengo un problema con el eclipse me pone errores como: "the field informatica is not visible" quitando esto, con el compilador no chuta.. si esto esta bien, luego pongo el codio junto de las 4 clases.

edito: el error que me da al ejecutarlo:
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
The constructor Asignatura() is undefined
The constructor Asignatura() is undefined
The constructor Asignatura() is undefined
The constructor Alumno() is undefined
The field Alumno.historia is not visible
The field Alumno.matematicas is not visible
The field Alumno.informatica is not visible
calcularMedia cannot be resolved or is not a field

at Actividad1.main(Actividad1.java:6)
El problema es que no tienes declarados esos constructores, deberías ir uno por uno con calma, aunque creo que el enunciado está mal redactado con ganas... se lo podrían haber currado más?.

Mira, he estado buscando algún tutorial que tuviese buena pinta y este no pinta mal:
Tutorial Java en PDF

Bájatelo y échale un vistazo, cubre bastantes aspectos y creo que te ayudará a comprender un poco mejor todo lo que te piden, y mucho más.

Un saludo
He estado mirando todo y no se por que me da los errores.
Pongo lo que me piden y mi codigo a ver si alguien ve el error:
Desarrollar una clase llamada Asignatura que:

Tenga dos atributos private de tipo int (el identificador) y de tipo double (la calificación).
Tenga un constructor con un parámetro de tipo int.
Tenga un getter para cada uno de los atributos.
Tenga un setter para la calificación.

public class Asignatura {

   
      public int identificador;
      public double nota;
      
         public Asignatura(int param){}
         
         public int getIdentificador()
         {
            return identificador;
         }
         public double getNota()
         {
            return nota;
            }
         public void setNota(double no)
         {
            nota = no;
         }
   }


el segundo:
Desarrollar una clase llamada Alumno que:

Tenga tres atributos private de tipo Asignatura.
Tenga un constructor con tres parámetros de tipo Asignatura que inicialice los tres atributos.
Tenga un constructor con tres parámetros de tipo int que inicialice los tres atributos.
Tenga un getter para cada uno de los atributos.

public class Alumno {

   private Asignatura historia;
   private Asignatura matematicas;
   private Asignatura informatica;
   
   public Alumno(Asignatura historia, Asignatura matematicas, Asignatura informatica)
   {
      this.historia = new Asignatura();
      this.matematicas = new Asignatura();
      this.informatica = new Asignatura();
      
   }
   public Alumno (int a, int b, int c){
      this.a = new historia ();
      this.b = new matematicas ();
      this.c = new informatica();

   }
   public Asignatura getHistoria(){
      return this.historia;
   }
   public Asignatura getMatematicas(){
      return this.matematicas;
      
   }
   public Asignatura getInformatica(){
      return this.informatica;
   }
}


Desarrollar una clase llamada Profesor que:

Tenga un método ponerNotas que recibe un parámetro de tipo Alumno y que no devuelve nada. Pondrá una calificación aleatoria a cada una de las asignaturas del alumno.
Tenga un método calcularMedia que recibe un parámetro de tipo Alumno y devuelve un double.

public class Profesor {

   public void ponerNotas (Alumno param ){
      param.historia = Math.random();
      param.matematicas = Math.random();
      param.informatica = Math.random();
   }
   public double calcularMedia (){
      return (Alumno.historia + Alumno.matematicas + Alumno.informatica)/3;
   }
}


Desarrollar una clase llamada Actividad1 que en su método main:

Cree e inicialice tres Asignaturas.
Cree un Alumno con las tres Asignaturas.
Cree un Profesor que le ponga calificaciones al Alumno y muestre por pantalla la media del Alumno.

public class Actividad1 {

   public static void main(String[] args) {
      
      Asignatura historia = new Asignatura();
      Asignatura matematicas = new Asignatura();
      Asignatura informatica = new Asignatura();
   
      Alumno daniel = new Alumno();
      
      Profesor arancha = new Profesor();
      
      System.out.println("la nota de historia es:" +Alumno.historia);
      System.out.println("la nota de matematicas es:" +Alumno.matematicas);
      System.out.println("la nota de informatica es:" +Alumno.informatica);
      System.out.println("la media es:" +Profesor.calcularMedia);

   }

}

No tengo ni idea de por que da problema al compilar...
Buenas, vereis, es una pequeña consulta, en eralidad la practica que debo hacer es otra, pero para simplificar la consulta, lo hare con una practica ficticia, si me lo pedis, pondre la principal que quiza sea mas facil.

Vereis, tengo lo siguiente:

una clase llamada metodo1

package pruebas;

public class metodo1
{
    private int vacas;
    private int cerdos;
   
    public metodo1(int vacas, int cerdos)
    {
        this.vacas = vacas;
        this.cerdos = cerdos;
    }

    metodo1() {

    }

    public int getCerdos() {
        return cerdos;
    }

    public void setCerdos(int cerdos) {
        this.cerdos = cerdos;
    }

    public int getVacas() {
        return vacas;
    }

    public void setVacas(int vacas) {
        this.vacas = vacas;
    }

  public void nVacas(int vacas)
    {
      System.out.println(String.format("el pastor tiene %d vacas", vacas));
  }

}



y el main
package pruebas;


public class Main {

 
    public static void main(String[] args)
    {
        metodo1 m1 = new metodo1();
   
        m1.nVacas(4);
   
    }



}


Estoy usando Netbeans, y mi intencion es que al ejecutar el main, me salga la frase del metodo Nvacas, el problema es que me da lo siguiente:

Java Result: -1073741819
BUILD SUCCESSFUL (total time: 0 seconds)


¿A que se debe? Gracias de antemano
System.out.println(String.format("el pastor tiene %d vacas", vacas));


No sé si será eso, pero cambia tu línea por:

System.out.println("El pastor tiene "+vacas+" vacas");
Legebril escribió:Estoy usando Netbeans, y mi intencion es que al ejecutar el main, me salga la frase del metodo Nvacas, el problema es que me da lo siguiente:

Java Result: -1073741819
BUILD SUCCESSFUL (total time: 0 seconds)


¿A que se debe? Gracias de antemano


Porque estás compilando, no ejecutando. Para arrancar la aplicación hay que pinchar con el botón derecho de ratón sobre el nombre del proyecto y elegir "Run", por ese "BUILD SUCCESSFUL" parece que le has dado a "Build", que solo compila (no ejecuta).

Si me equivoco y en realidad le has dado a Run, puede ser k la salida del programa esté en otra ventana del Netbeans (puede crear ventanitas de output por cada aplicacion que hayas ejecutado) compruebalo.
Nada, cambiando el codigo a lo que me dijiste, K.Ichigo, tampoco funciona da el mismo "error"

Y si, estaba dando a run, asi que nada, seguimos en las mismas.



En otro foro me han dicho que lo han abierto con eclipse y les ha funcionado, quiza sea problema de mi NetBeans?


EDITO::he actualizado y al menos ya no me da ese error y meustra el texto, por lo menos en el ejemplo cutre este, ahora tengo que hacer la practica ^^ si veo que surgen dudas, os pongo aqui a ver si podeis echarme una mano.

Muchas gracias a todos!
Buenas, tengo un pequeño problema al crear una sentencia de MySQL para llamarla desde un programa JAVA.

Os comento.

Si hago esto:

String CAD_FILTRO = cad_filtro;
CONSULTA="SELECT * FROM GRUPOS where NOMBRE like '"+CAD_FILTRO+"' ORDER BY NOMBRE ASC";
ResultSet rs = s.executeQuery(CONSULTA);


Todo Ok, pero no me vale ya que esto implica un obvio problema de seguridad

Si hago esto:

CONSULTA="SELECT * FROM GRUPOS where NOMBRE LIKE ? ORDER BY NOMBRE ASC";
PreparedStatement consulta = (PreparedStatement) conn.prepareStatement(CONSULTA);
consulta.setString(1, CAD_FILTRO);
ResultSet rs = s.executeQuery(CONSULTA);


Me da el siguiente error:


[2010-12-10 02:08:20,515] 45953 [AWT-EventQueue-0] [bbdd.SelectDatosBBDD.SelectGruposCargaJCB(SelectDatosBBDD.java:122)] ERROR bbdd.SelectDatosBBDD  - Hubo un problema al intentar conectarse con la base de datos jdbc:mysql://192.168.1.5/Catalogador_pre
[2010-12-10 02:08:20,515] 45953 [AWT-EventQueue-0] [bbdd.SelectDatosBBDD.SelectGruposCargaJCB(SelectDatosBBDD.java:123)] ERROR bbdd.SelectDatosBBDD  - com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '? ORDER BY NOMBRE ASC' at line 1


Alguna idea??
daniel_5 escribió:Todo Ok, pero no me vale ya que esto implica un obvio problema de seguridad


Einch?? yo veo exactamente el mismo problema de inyección de código en ambos casos. Lo que se suele hacer es validar primero el string que te pasa el usuario para asegurarte de que no te está jodiendo. Lo típico es aplicar una expresión regular para comprobar que no haya caracteres como ";" que te pueden joder la vida.

En cuanto a por qué no te funciona lo del PreparedStatement... pues no se, yo lo veo bien :-? . Echa un ojo a este ejemplo a ver si ves algo raro en tu código http://www.avajava.com/tutorials/lesson ... mysql.html
daniel_5 escribió:Buenas, tengo un pequeño problema al crear una sentencia de MySQL para llamarla desde un programa JAVA.

Os comento.

Si hago esto:

String CAD_FILTRO = cad_filtro;
CONSULTA="SELECT * FROM GRUPOS where NOMBRE like '"+CAD_FILTRO+"' ORDER BY NOMBRE ASC";
ResultSet rs = s.executeQuery(CONSULTA);


Todo Ok, pero no me vale ya que esto implica un obvio problema de seguridad

Si hago esto:

CONSULTA="SELECT * FROM GRUPOS where NOMBRE LIKE ? ORDER BY NOMBRE ASC";
PreparedStatement consulta = (PreparedStatement) conn.prepareStatement(CONSULTA);
consulta.setString(1, CAD_FILTRO);
ResultSet rs = s.executeQuery(CONSULTA);


Me da el siguiente error:


[2010-12-10 02:08:20,515] 45953 [AWT-EventQueue-0] [bbdd.SelectDatosBBDD.SelectGruposCargaJCB(SelectDatosBBDD.java:122)] ERROR bbdd.SelectDatosBBDD  - Hubo un problema al intentar conectarse con la base de datos jdbc:mysql://192.168.1.5/Catalogador_pre
[2010-12-10 02:08:20,515] 45953 [AWT-EventQueue-0] [bbdd.SelectDatosBBDD.SelectGruposCargaJCB(SelectDatosBBDD.java:123)] ERROR bbdd.SelectDatosBBDD  - com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '? ORDER BY NOMBRE ASC' at line 1


Alguna idea??


Tienes que ejecutar el PreparedStatement, no ese "s" que supongo será la conexión, sería algo como consulta.executeQuery() (no recuerdo ahora mismo la sintaxis exacta, pero seria algo parecido). tendrás que asociar tu PreparedStatement con la conexión que hayas creado.

Aqui tienes un ejemplo, es con un Update, pero bueno, no creo que tardes demasiado en adaptarlo a tu select. http://www.chuidiang.com/java/mysql/PreparedStatement-java-mysql.php
Tanke2K2 escribió:Tienes que ejecutar el PreparedStatement, no ese "s" que supongo será la conexión, sería algo como consulta.executeQuery() (no recuerdo ahora mismo la sintaxis exacta, pero seria algo parecido). tendrás que asociar tu PreparedStatement con la conexión que hayas creado.

Aqui tienes un ejemplo, es con un Update, pero bueno, no creo que tardes demasiado en adaptarlo a tu select. http://www.chuidiang.com/java/mysql/PreparedStatement-java-mysql.php


Joder, es verdad!! xDDD Desde luego 4 ojos ven más que 2, no me había dado ni cuenta :P
redscare escribió:
daniel_5 escribió:Todo Ok, pero no me vale ya que esto implica un obvio problema de seguridad


Einch?? yo veo exactamente el mismo problema de inyección de código en ambos casos. Lo que se suele hacer es validar primero el string que te pasa el usuario para asegurarte de que no te está jodiendo. Lo típico es aplicar una expresión regular para comprobar que no haya caracteres como ";" que te pueden joder la vida.

En cuanto a por qué no te funciona lo del PreparedStatement... pues no se, yo lo veo bien :-? . Echa un ojo a este ejemplo a ver si ves algo raro en tu código http://www.avajava.com/tutorials/lesson ... mysql.html

No, con el PreparedStament se evita SQL injection, no hace falta validar la cadena de entrada ;) precisamente en JAVA se evita de esta manera.

Tanke2K2 escribió:Tienes que ejecutar el PreparedStatement, no ese "s" que supongo será la conexión, sería algo como consulta.executeQuery() (no recuerdo ahora mismo la sintaxis exacta, pero seria algo parecido). tendrás que asociar tu PreparedStatement con la conexión que hayas creado.

Aqui tienes un ejemplo, es con un Update, pero bueno, no creo que tardes demasiado en adaptarlo a tu select. http://www.chuidiang.com/java/mysql/PreparedStatement-java-mysql.php


Cierto, joder no se como no me di cuenta, tengo 1000 consultas similares, por mas que miraba no lo veía :) bueno si se por que se me paso, por que al ponerlo de la otra forma no se ejecuta el PreparedStament, y al hacer copy & paste pues lo puse mal XD

Finalmente el código se queda de esta manera.

Statement s = conn.createStatement();

if (FILTRO == true)
{
CONSULTA="SELECT * FROM GRUPOS where NOMBRE LIKE ? ORDER BY NOMBRE ASC";
PreparedStatement consulta = (PreparedStatement) conn.prepareStatement(CONSULTA);
consulta.setString(1, CAD_FILTRO);
ResultSet rs = consulta.executeQuery();
while (rs.next())
{
GRUPO = rs.getString("NOMBRE").toString();

if (DISCO_GRUPO.equalsIgnoreCase("DISCO"))
{
InsertDiscos.JCBNombreGrupo.addItem(GRUPO);
logger.trace("Se ha añadido al JComboBox de Insertar Disco el grupo: '" + rs.getString("NOMBRE").toString()+"'");
}
else if (DISCO_GRUPO.equalsIgnoreCase("GRUPO"))
{
InsertCanciones.JCBNombreGrupo.addItem(GRUPO);
logger.trace("Se ha añadido al JComboBox de Insertar Canciones el grupo: '" + rs.getString("NOMBRE").toString()+"'");
}
}
rs.close();

}
else if (FILTRO == false)
{
CONSULTA ="SELECT * FROM GRUPOS ORDER BY NOMBRE ASC";
ResultSet rs = s.executeQuery(CONSULTA);

while (rs.next())
{
GRUPO = rs.getString("NOMBRE").toString();

if (DISCO_GRUPO.equalsIgnoreCase("DISCO"))
{
InsertDiscos.JCBNombreGrupo.addItem(GRUPO);
logger.trace("Se ha añadido al JComboBox de Insertar Disco el grupo: '" + rs.getString("NOMBRE").toString()+"'");
}
else if (DISCO_GRUPO.equalsIgnoreCase("GRUPO"))
{
InsertCanciones.JCBNombreGrupo.addItem(GRUPO);
logger.trace("Se ha añadido al JComboBox de Insertar Canciones el grupo: '" + rs.getString("NOMBRE").toString()+"'");
}
}
rs.close();
}
s.close();
conn.close();


Gracias a todos :P
769 respuestas
15, 6, 7, 8, 916