Mostrar Mensajes

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


Mensajes - maxplanck

Páginas: [1] 2
1
Gracias por el comentario pedro,,. Como siempre, me son de gran ayuda. Ya no me acuerdo porqué pero hubo alguna razón por la que lo hice así y luego cuando un código funciona se me suele pasar revisar los apaños que he hecho, mal por mí   :-[   ;D ;D ;D.

2
Hola a todos, paso a presentaros las respuestas a este ejercicio CU00690B del taller de programación en POO y los códigos necesarios.

Primero las preguntas:

a) ¿Un objeto de tipo estático declarado Taxi puede contener a un objeto Vehiculo en tiempo de ejecución?

Sí mediante casting.

b) ¿Un objeto de tipo estático declarado Vehiculo puede contener a un objeto Taxi en tiempo de ejecución?

Sí, este tipo de conversiones hacia abajo es simpre posible.

Clase Vehiculo (Está aprovechada de un ejercicio anterior).

Código: [Seleccionar]
package Coches;
import java.util.*;

/**
 * Esta clase define vehículos que pertenecen a una de cinco marcas incluidas en un Tipo enumerado.
 * @author maxplanck
 */
public class Vehiculo {
    public enum Marca {FORD, TOYOTA, SUZUKI, RENAULT, SEAT};
    private String matricula;
    private Marca marca;
    private int numeroDeRuedas;
   
    public Vehiculo(){
        matricula= "";
        marca = null;
        numeroDeRuedas = 0;
    }

    /**
     * Método que devuelve la matrícula
     * @return Un String
     */   
    public String getMat () {return matricula;}

    /**
     * Método que devuelve la narca del coche.
     * @return Un tipo enumerado.
     */   
    public Marca getMar () {return marca;}
   
    public int getRuedas () {return numeroDeRuedas;}

    /**
     * Método para establecer la matrícula.
     */   
    public void setMat (String mat){matricula = mat;}

    /**
     * Método para establecer la marca.
     */   
    public void setMar (Marca mar) {marca = mar;}
   
    public void setRuedas (int ruedas) {numeroDeRuedas = ruedas;}
   
    public String toString() {
        Integer ent = numeroDeRuedas;
        return ("Matrícula: ").concat(matricula).concat(". Número de ruedas: ").concat(ent.toString());
    }
}

Clase Taxi2:

Código: [Seleccionar]
package Coches;
public class Taxi2 extends Vehiculo {
    private String conductor;
    private int plazas;

    public Taxi2 () {
        super();
        conductor = "";
        plazas = 0;
    }

    public void setConductor(String conductor){
        this.conductor = conductor;
    }

    public void setPlazas (int plazas) {
        this.plazas = plazas;
    }

    public String getConductor () {return conductor;}
   
    public int getPlazas () {return plazas;}

    public String toString () {
        Integer ent = plazas;
        return super.toString().concat(". Plazas: ").concat(ent.toString()).
        concat(". Conductor: ").concat(conductor.toUpperCase().concat("."));
    }

}

Y, finalmente, la clase Test2:

Código: [Seleccionar]
package Coches;

public class Test2 {   
    public static void main (String [] Args) {
        Vehiculo car = new Vehiculo();
        Taxi2 taxi =new Taxi2();
        car = taxi;
        car.setMat ("V-1385-CH");
        car.setRuedas (4);
        taxi.setConductor ("Perico");
        taxi.setPlazas (4);
        System.out.println (taxi.toString());

    }
}     

Espero vuestros comentarios y correcciones agradeciéndoos por anticipado vuestra ayuda. Saludos.

3
Mil gracias pedro,,... como siempre. Liado con el  ejercicio siguiente se me habia pasado éste.. me habría venido bien echarle un ojo antes y me habría ahorrado  algún dolor de cabeza... nunca es tarde.  Saludos y hasta la próxima  ;).

4
Hola de nuevo pedro,, y gracias por tu respuesta. Tengo que repasar las bases más a fondo (este parón no me ha sentado bien  ;D) . Ahora que me doy cuenta del error tan básico que he cometido, esto es, confundir los métodos del tipo  EnvioDeProducto con los de un tipo ArrayList  es para hacérselo mirar pero es la desesperación lo que me lleva a no saber donde estoy porque esta clase EnvioDeProductos original también me daba fallo en el método iterator()...me harté de probar cosas y acabé liándola.

Clase EnvioDeProductos primaria:
Código: [Seleccionar]
import java.util.*;
public class EnvioDeProductos {
   
private List<Producto> listaEnvio;

public EnvioDeProductos () {
    listaEnvio = new ArrayList<Producto>();
}

public void addProducto (Producto producto){
    listaEnvio.add(producto);
}

public Producto getProducto (int pos) {
   return listaEnvio.get(pos);
}

public int getSize (){
    return listaEnvio.size();
}

public void mostrarDatos (EnvioDeProductos listaEnvio/**GRAN CAGADA**/) {
    Iterator<Producto> it = listaEnvio.iterator();
     while (it.hasNext()) {
           System.out.println("El artículo " + it.next()+ " tiene las siguientes características:");
           it.next().datosProducto(it.next().toString());

    }
}

}


Me acabo de dar cuenta de mi verdadero error y edito el post para aclararme a mí mismo lo que he hecho. En el método para iterar he pusto como argumento (EnvioDeProducto listaEnvio) algo completamente equivocado y además totalmente innecesario. Gracias por hacérmelo ver.

5
Buenas. Llevo aquí 3 días enfrascado con este ejercicio CU00688B del curso básico de Java y un fallo de compilación tonto que no consigo resolver  :P. Debe de ser un error básico pero no doy con él.

El error que me da BlueJ es cannot find symbol- method iterator() y las clases afectadas son bastante simples. No sé que estoy haciendo mal pues los tipos listaEnvio o nuevoEnvio los declaro como ArrayList y he importado java.util.*. He recurrido a dos objetos por que he intentado crear el tipo Iterator de dos maneras diferentes. Una en la clase EnvioDeProducto y otra en la clase TestHerencia4 pero no me ha servido de nada. Aquí os dejo las dos clases (la clase test está sin rematar):

Clase EnvioDeProducto:
Código: [Seleccionar]
import java.util.*;
public class EnvioDeProductos {
   
private List<Producto> listaEnvio;

public EnvioDeProductos () {
    listaEnvio = new ArrayList<Producto>();
}

public void addProducto (Producto producto){
    listaEnvio.add(producto);
}

public Producto getProducto (int pos) {
   return listaEnvio.get(pos);
}

public int getSize (){
    return listaEnvio.size();
}

public Iterator envioIterator (EnvioDeProductos listaEnvio) {
    Iterator<Producto> it = listaEnvio.iterator();
    return it;
}

}

Clase TestHerencia4:

Código: [Seleccionar]
import java.util.*;
public class TestHerencia4   {
    public static void main (String [] Args) {
        EnvioDeProductos nuevoEnvio = new EnvioDeProductos();
       
        ProductoFresco cosa1 = new ProductoFresco ();
        nuevoEnvio.addProducto(cosa1);
        ProductoFresco cosa2 = new ProductoFresco ();
        nuevoEnvio.addProducto(cosa2);
        ProductoRefrigerado cosa3 = new ProductoRefrigerado ();
        nuevoEnvio.addProducto(cosa3);
        ProductoRefrigerado cosa4 = new ProductoRefrigerado ();
        nuevoEnvio.addProducto(cosa4);
        ProductoRefrigerado cosa5 = new ProductoRefrigerado ();
        nuevoEnvio.addProducto(cosa5);
        CongeladoAgua cosa6 = new CongeladoAgua ();
        nuevoEnvio.addProducto(cosa6);
        CongeladoAgua cosa7 = new CongeladoAgua ();
        nuevoEnvio.addProducto(cosa7);
        CongeladoAire cosa8 = new CongeladoAire ();
        nuevoEnvio.addProducto(cosa8);
        CongeladoAire cosa9 = new CongeladoAire ();
        nuevoEnvio.addProducto(cosa9);
        CongeladoNitrogeno cosa10 = new CongeladoNitrogeno ();
        nuevoEnvio.addProducto(cosa10);
       
        Calendar fechaEnv = Calendar.getInstance();
        Calendar fechaCad = Calendar.getInstance();
       
       
        fechaEnv.set(2017,10,21);
        cosa1.setFechaEnvasado(fechaEnv);
        fechaEnv.set(2017,10,22);
        cosa2.setFechaEnvasado(fechaEnv);
        fechaEnv.set(2017,10,23);
        cosa3.setFechaEnvasado(fechaEnv);
        fechaEnv.set(2017,10,24);
        cosa4.setFechaEnvasado(fechaEnv);
        fechaEnv.set(2017,10,25);
        cosa5.setFechaEnvasado(fechaEnv);
        fechaEnv.set(2017,10,26);
        cosa6.setFechaEnvasado(fechaEnv);
        fechaEnv.set(2017,10,27);
        cosa7.setFechaEnvasado(fechaEnv);
        fechaEnv.set(2017,10,28);
        cosa8.setFechaEnvasado(fechaEnv);
        fechaEnv.set(2017,10,29);
        cosa9.setFechaEnvasado(fechaEnv);
        fechaEnv.set(2017,10,30);
        cosa10.setFechaEnvasado(fechaEnv);
       
       
       
        fechaCad.set(2018,10,22);
        cosa1.setFechaCaducidad(fechaCad);
        fechaCad.set(2018,10,22);
        cosa2.setFechaCaducidad(fechaCad);
        fechaCad.set(2018,10,22);
        cosa3.setFechaCaducidad(fechaCad);
        fechaCad.set(2018,10,22);
        cosa4.setFechaCaducidad(fechaCad);
        fechaCad.set(2018,10,22);
        cosa5.setFechaCaducidad(fechaCad);
        fechaCad.set(2018,10,22);
        cosa6.setFechaCaducidad(fechaCad);
        fechaCad.set(2018,10,22);
        cosa7.setFechaCaducidad(fechaCad);
        fechaCad.set(2018,10,22);
        cosa8.setFechaCaducidad(fechaCad);
        fechaCad.set(2018,10,22);
        cosa9.setFechaCaducidad(fechaCad);
        fechaCad.set(2087,10,22);
        cosa10.setFechaCaducidad(fechaCad);
       
     
        cosa1.setNumLote(0001);
        cosa2.setNumLote(0002);
        cosa3.setNumLote(0003);
        cosa4.setNumLote(0004);
        cosa5.setNumLote(0002);
        cosa6.setNumLote(0001);
        cosa7.setNumLote(0002);
        cosa8.setNumLote(0003);
        cosa9.setNumLote(0001);
        cosa10.setNumLote(0041);
       
        cosa1.setPaisOrigen("Chiquitistán");
        cosa2.setPaisOrigen("Bananistán");
        cosa3.setPaisOrigen("La Gila");
        cosa4.setPaisOrigen("Trumpellot");
        cosa5.setPaisOrigen("Camelot");
        cosa6.setPaisOrigen("Camelot");
        cosa7.setPaisOrigen("Bananistán");
        cosa8.setPaisOrigen("La Gila");
        cosa9.setPaisOrigen("Trumpellot");
        cosa10.setPaisOrigen("Chiquitistán");
       
        cosa3.setCodigoOSA("co003");
        cosa4.setCodigoOSA("co004");
        cosa5.setCodigoOSA("co005");
       
        cosa3.setTemRecomendada(5.5);
        cosa4.setTemRecomendada(4);
        cosa5.setTemRecomendada(2.5);
        cosa6.setTemRecomendada(-5.5);
        cosa7.setTemRecomendada(-4);
        cosa8.setTemRecomendada(-2.5);
        cosa9.setTemRecomendada(-20.5);
        cosa10.setTemRecomendada(-10);
       
        cosa6.setSalinidad(4);
        cosa7.setSalinidad(8.5);
       
        cosa8.setNitro(25);
        cosa8.setOxi(20);
        cosa8.setDiox(30);
        cosa8.setVapor(20);
        cosa9.setNitro(10);
        cosa9.setOxi(20);
        cosa9.setDiox(30);
        cosa9.setVapor(40);
       
        cosa10.setMetodo("Lento");
        cosa10.setTiempoExposicion(240);
       
        cosa1.datosFresco("cosa1");       
        cosa2.datosFresco("cosa2");     
        //cosa3.datosProducto("cosa3");
        //cosa3.datosFrio("cosa3");
        cosa3.datosRefrigerado("cosa3");
        //cosa4.datosProducto("cosa4");
        //cosa4.datosFrio("cosa4");
        cosa4.datosRefrigerado("cosa4");
        //cosa5.datosProducto("cosa5");
        //cosa5.datosFrio("cosa5");
        cosa5.datosRefrigerado("cosa5");
        //cosa6.datosProducto("cosa6");
        cosa6.datosAgua("cosa6");
        //cosa6.datosFrio("cosa6");
        //cosa7.datosProducto("cosa7");
        cosa7.datosAgua("cosa7");
        //cosa7.datosFrio("cosa7");
        //cosa8.datosProducto("cosa8");
        cosa8.datosAire("cosa8");
        //cosa8.datosFrio("cosa8");
        //cosa9.datosProducto("cosa9");
        cosa9.datosAire("cosa9");
       // cosa9.datosFrio("cosa9");
        //cosa10.datosProducto("cosa10");
        cosa10.datosNitrogeno("cosa10");
        //cosa10.datosFrio("cosa10");
       
        System.out.println("El envío se compone de " + nuevoEnvio.getSize() + " artículos:");
        Iterator<Producto> it = nuevoEnvio.iterator();
        while (it.hasNext()) {
           System.out.println("El artículo " + it.next()+ " tiene las siguientes características:");
           it.next().datosProducto(it.next().toString());

    }
}
}

Gracias por vuestros comentarios. Saludos

6
Hola de nuevo compañeros.

Ha sido un periodo largo sin aparecer por aquí (bajo mi punto de vista, a lo mejor a otros os parece que ha sido poco  ;D ;D).  No me planteo ni por asomo abandonar este curso de Java (lo siento) y como muestra mi código para las clases de este ejercicio CU00686B que esperan vuestras sugerencias y comentarios, siempre os estaré agradecido por vuetra ayuda.

Clase Producto:

Código: [Seleccionar]
public class Producto {
    private String fechaCaducidad;
    private int numLote;
   
    public Producto () {
        fechaCaducidad = "";
        numLote = 0;
    }
     public void setFechaCaducidad (String fechaCaducidad){
         this.fechaCaducidad = fechaCaducidad;
        }
        public void setNumLote (int num) {
            numLote = num;
        }
        public String getFechaCaducidad (){
            return fechaCaducidad;
        }
        public int getNumLote () {
            return numLote;
        }
        public void datosProducto (String nombreProducto) {
            System.out.println ("El producto " + nombreProducto +" tiene como fecha de caducidad: " + fechaCaducidad);
            System.out.println ("El producto " + nombreProducto +" tiene como número de lote: " + numLote);
        }
    }

Y ahora la clase ProductoFresco:

Código: [Seleccionar]
public class ProductoFresco extends Producto {
    private String fechaEnvasado;
    private String paisOrigen;
   
    public ProductoFresco () {
        super();
        fechaEnvasado="";
        paisOrigen="";
    }
   
    public void setFechaEnvasado (String fechaEnvasado) {
        this.fechaEnvasado = fechaEnvasado;
    }
   
    public void setPaisOrigen (String paisOrigen) {
        this.paisOrigen = paisOrigen;
    }
   
    public String getFechaEnvasado (){ return fechaEnvasado;}
   
    public String getPaisOrogen () {return paisOrigen;}
   
    public void datosFresco (String nombreProducto) {
        System.out.println ("El producto " + nombreProducto +" tiene como fecha de envasado: " + fechaEnvasado);
        System.out.println ("El producto " + nombreProducto +" tiene como país de origen " + paisOrigen);
    }
   
}

Clase ProductoRefrigerado:

Código: [Seleccionar]
public class ProductoRefrigerado extends Producto {   
    private String codigoOSA;
   
    public ProductoRefrigerado () {
        super();
        codigoOSA = null;
    }
       
    public void setCodigoOSA (String codigoOSA) {
        this.codigoOSA = codigoOSA;
    }
   
    public String getCodigoOSA () {return codigoOSA;}
   
    public void datosRefrigerado (String nombreProducto) {
        System.out.println ("El producto " + nombreProducto +" tiene como codigo O.S.A.: " + codigoOSA);
    }
   
}

Clase ProductoCongelado:

Código: [Seleccionar]
public class ProductoCongelado extends Producto {   
    private float temRecomendada;
   
    public ProductoCongelado () {
        super();
        temRecomendada= 0;
    }
       
    public void setTemRecomendada (float temRecomendada) {
        this.temRecomendada = temRecomendada;
    }
   
    public float getTemRecomendada () {return temRecomendada;}
    public void datosCongelado (String nombreProducto){
        System.out.println ("El producto " + nombreProducto +" tiene como teperatura de congelación recomendada: " + temRecomendada);
    }
   
}

Y por último la clase TestHerencia2:

Código: [Seleccionar]
public class testHerencia2 {
    public static void main (String [] Args) {
       
        ProductoFresco cosa1 = new ProductoFresco ();
        ProductoRefrigerado cosa2 = new ProductoRefrigerado ();
        ProductoCongelado cosa3 = new ProductoCongelado ();
       
        cosa1.setFechaCaducidad("1-1-2018");
        cosa2.setFechaCaducidad("2-2-2018");
        cosa3.setFechaCaducidad("3-3-2018");
       
        cosa1.setNumLote(0001);
        cosa2.setNumLote(0002);
        cosa3.setNumLote(0003);
       
        cosa1.setFechaEnvasado ("1-1-2017");
        cosa1.setPaisOrigen("Chiquitistán");
       
        cosa2.setCodigoOSA("co002");
       
        cosa3.setTemRecomendada(-20.5f);
       
        cosa1.datosProducto("cosa1");
        cosa1.datosFresco("cosa1");
        cosa2.datosProducto("cosa2");
        cosa2.datosRefrigerado("cosa2");
        cosa3.datosProducto("cosa3");
        cosa3.datosCongelado("cosa3");
    }
}

Hasta pronto.

7
Hola amigos, aquí les dejo las dos clases que he realizado para este ejercicio CU00682B del tutorial de programación Java. Son bastante sencillas pues están hechas con el único propósito de aprender a manejar clases tipo enum.

Como siempre, gracias a todos por vuestro tiempo y  por los comentarios.

Clase TipoDePiedras:

Código: [Seleccionar]
public enum TipoDePiedra {
    CALIZA(1200f),
    MARMOL(1423.55f),
    PIZARRA(1325f),
    CUARZITA(1466.22f);
   
    private final float pesoEspecifico;//con double quedaban los números más feos.
   
    TipoDePiedra (float pesoEspecifico) {
        this.pesoEspecifico = pesoEspecifico;
    }
   
    public float getPeso () {return pesoEspecifico;}
}


Y ésta es la clase Test:

Código: [Seleccionar]
/**
 * clase test muy sencilla sin ningún tipo de alarde...excepto puede que el hecho de usar la palabra alarde :)
 */
public class TestPiedras {
   
    public static void main (String [] Args) {
        System.out.println ("El peso de un palet de cada clase de piedra es: ");
        for (TipoDePiedra tmp: TipoDePiedra.values()) {
            System.out.println (tmp.toString()+ ": " + (tmp.getPeso() * 2.27) + " Kg.");
        }
    }
}

8
Gracias por tu consejo pedro,,, de hecho ya me ha pasado alguna vez el no saber cual era el método al que tenía que llamar sin leer el código, pero luego me da pereza poner nombres largos que tengo que repetir y .... :-[.

9
Hola de nuevo, tras unos días ajetreados aquí estamos de nuevo dando la paliza  ;D. En esta ocasión os dejo el código que he realizado para este ejercicio del curso de programación Java para que comentéis cualquier cosa que se os ocurra. Gracias mil como siempre a todos por vuestro tiempo.
He aprovechado para ir practicando lo del javadoc.


Clase Vehículos.

Código: [Seleccionar]
package Coches;
import java.util.*;
/**
 * Esta clase define vehículos que pueden pertenecer a una de cinco marcas incluidas en un Tipo enumerado.
 * @author maxplanck
 */
public class Vehiculo {
    public enum Marca {FORD, TOYOTA, SUZUKI, RENAULT, SEAT};
    private String matricula;
    private Marca marca;
    /**
     * constructor sin parámetros que inicializa a cadena vacía y null.
     * @version 1.0 :)
     */     
    public Vehiculo(){
        matricula= "";
        marca = null;
    }

    /**
     * Método que devuelve la matrícula
     * @return Un String
     */   
    public String getMat () {return matricula;}

    /**
     * Método que devuelve la narca del coche.
     * @return Un tipo enumerado.
     */   
    public Marca getMar () {return marca;}

    /**
     * Método para establecer la matrícula.
     */   
    public void setMat (String mat){matricula = mat;}

    /**
     * Método para establecer la marca.
     */   
    public void setMar (Marca mar) {marca = mar;}
}

Y ahora la clase Test.
Código: [Seleccionar]
package Coches;
import java.util.*;
/**
 * Clase para testear el Tipo enumerado de la clase Vehiculo del mismo package. Sin constructor.
 * @author maxplanck
 */
public class TestVehiculo {   
    /**
     * Método main que permite establecer y comprobar marca y matrícula del vehículo nuevo.
     */
    public static void main (String [] Args) {
        Vehiculo car = new Vehiculo();
        String ent = "";
        Scanner tec = new Scanner(System.in);
        boolean q = true;
        while (q == true) {
            System.out.println ("Introduzca marca vehículo nuevo.");
            ent = tec.nextLine();

            if (ent.equalsIgnoreCase("FORD")) {
                car.setMar(Vehiculo.Marca.FORD);

            }
            else if  (ent.equalsIgnoreCase("TOYOTA")) {
                car.setMar(Vehiculo.Marca.TOYOTA);
            }
            else if  (ent.equalsIgnoreCase("SUZUKI")) {
                car.setMar(Vehiculo.Marca.SUZUKI);

            }
            else if  (ent.equalsIgnoreCase("RENAULT")) {
                car.setMar(Vehiculo.Marca.RENAULT);

            }
            else if  (ent.equalsIgnoreCase("SEAT")) {
                car.setMar(Vehiculo.Marca.SEAT);

            }
            else{
                System.out.println ("Marca desconocida.");
            }

            System.out.println ("Introduzca matrícula vehículo nuevo.");
            ent = tec.nextLine();
            car.setMat(ent);
            System.out.println ("La marca es: " + car.getMar() + "  y la matrícula es: " + car.getMat());
            System.out.println ("¿Desea añadir otro vehículo?. S/N");
            ent =tec.nextLine();
            if (ent.equalsIgnoreCase("n")){// por sencillez no contemplo el caso de otro caracter distinto de S/N
                q = false;
            }
        }       
    }
}

10
Siempre es lo mismo, la falta al detalle. Es que en principio lo hice para mil pero luego me di cuenta de que en el enunciado era 100 y cambié uno y no el otro  :P.
Gracias por el apoyo.

11
Este es mi código para este ejercicio CU00672B del curso de fundamentos de Java. Como siempre, espero y agradezco vuestros comentarios:

Código: [Seleccionar]
import java.util.*;
public class Adivina {
    public static void main (String [] args) {       
        Integer integ = 0;
        Random ran = new Random();
        int alea = ran.nextInt(100) + 1;// +1  porque nextInt incluye el cero y no el cien
        Scanner tec =new Scanner(System.in);
        System.out.print ("Intente adivinar el número secreto, teclee un número entre 1 y 1000:");
        integ = Integer.valueOf(tec.nextLine());
        int ent = (int)integ;

        while (ent != alea){
           
            if (ent > alea) {
                System.out.print ("El número secreto es menor, puebe de nuevo: ");
                ent = Integer.valueOf(tec.nextLine());                               
            }             
            else if (ent < alea){             
                System.out.print ("El número secreto es mayor, puebe de nuevo: ");
                ent = Integer.valueOf(tec.nextLine());
            }
        }
        System.out.print ("Acertó!!!");
    }
}
Un saludo.

12
Muchas gracias a ambos, estos son los tipos de consejo que busco. Ya se me había pasado por la mente que quizás con un sólo objeto Sacnner se debería poder funcionar, pero cuando hago alguno de los ejerciciós, y como me lío tanto con los otros aspectos, prefiero ir a lo seguro y eso hace mis códigos más feos. Gracias también por aclararme lo del main, que me traía loco, no sé en que fase de escribir el código me fallo lo del listaT.listar() y usé ListaCantantesFamosos.listar() (hubo momentos que todos los métodos estaban en la case Test, luego sólo algunos y así...) y ya no supe darme cuenta. Igual con el null y el == true, probé tantas cosas que al final quedó así y no me atreví a tocarlo.
También agredecerte ESOJ tu código, algo así se me pasó por la mente en algún momento pero no supe desarrollarlo, lo de "lista.add(new CantanteFamoso (cantante,disco))" es justo de la siguiente lección y yo soy cartesiano (quiero decir "cuadriculao" :)) )... no continúo sin haber acabado el ejercicio de la última lección. Con el uso del this todavía me falla algún concepto y cuando intento usarlo a veces me da errores, viendo vuestros ejemplos se me hace más claro. El problema siempre es el mismo en el fondo...EL **** TIEMPO, que siempre me falta  :'( . Está claro que no basta con hacer los ejercios y que hay que documentarse bien y estudiar las cosas con detalle para tener una buena base, pacienza y un saludo a todos.


13
Gracias ESOJ mensaje recibido. Imagino que es compilando con javac - Xlint:unchecked en la  consola de Windows.

14
Sin apenas resaca y recién levantado, mi primera tarea del año es mandaros las clases de este ejercicio CU00667B del tutorial de programación en Java desde cero, (que me ha costado un montón... que rayada con el iterator hasta dar con el null  :P).

Bueno, ahí va la primera.

Clase CantanteFamoso:

Código: [Seleccionar]
import java.util.*;
public class CantanteFamoso {
    private  String nombre;
    private String discoConMasVentas;
    public CantanteFamoso () {
        nombre = "";
        discoConMasVentas = "";
    }
   
    public CantanteFamoso (String name1,String disco1) {
        nombre = name1;
        discoConMasVentas = disco1;
    }
   
    public  String getNombre (){return nombre;}
   
    public  String getDisco (){return discoConMasVentas;}
   
    public  void setNombre (String nombre2) {nombre = nombre2;}
   
    public  void setDisco (String disco2 ){discoConMasVentas = disco2;}
}


Y aquí la segunda, ListaCantantesFamosos.

Código: [Seleccionar]
import java.util.*;
public class ListaCantantesFamosos {
    private static ArrayList<CantanteFamoso> lista1;

    public ListaCantantesFamosos () {
        lista1 = new ArrayList<CantanteFamoso>();

    }

    public static void listaInicial ()  {
        CantanteFamoso cantorA = new CantanteFamoso ("Siniestro Total" , "¿Cuándo se come aquí?");
        lista1.add(cantorA);
        CantanteFamoso cantorb = new CantanteFamoso ("The Smiths" , "¿The Queen is dead?");
        lista1.add(cantorb);
    }
    //public static String getDisc1 (int poss2) {return (lista1.get(poss2)).getDisco();}
    public static void listar() {
        CantanteFamoso cantorX = null;
        Iterator<CantanteFamoso> it = lista1.iterator();
        while (it.hasNext() == true) {
            cantorX = it.next();
            System.out.println ("Nombre del cantante/grupo: " + cantorX.getNombre() + ";    Nombre del disco: " + cantorX.getDisco());
        }
       
    }

    public static void preguntar(){
        String ent = "";
        boolean si = true;
        while (si == true){
            System.out.println ("¿Desea añadir otra entrada?: S/N");
            Scanner tec =new Scanner(System.in);
            ent = tec.nextLine();
            if (ent.equalsIgnoreCase ("S")) {
                nuevo();
            }
            else if (ent.equalsIgnoreCase ("n")) {
                System.out.println ("Fin del programa, gracias por colaborar.");
                System.out.println ("La lista definitiva es:");
                listar();
                si = false;
            }
            else {
                System.out.println ("Entrada no válida.");
                //evaluar();
            }
        }
    }

    public static void nuevo () {
        CantanteFamoso cantorX;
        String ent1 = "";
        System.out.println ("Introduzca nuevo nombre de cantante/grupo.");
        Scanner tec1 =new Scanner(System.in);
        ent1 = tec1.nextLine();
        String ent2 = "";
        System.out.println ("Introduzca nuevo nombre disco.");
        Scanner tec2 =new Scanner(System.in);
        ent2 = tec2.nextLine();           
        cantorX = new CantanteFamoso(ent1,ent2);
        lista1.add(cantorX);
        System.out.println ("La nueva lista  es:");
        listar();
    }


Y ahora la última, TestLista:

Código: [Seleccionar]
import java.util.*;
public class TestLista {

   public static void main (String[] args) {
       ListaCantantesFamosos listaT = new ListaCantantesFamosos ();
       ListaCantantesFamosos.listaInicial();
       System.out.println ("La lista actual contiene las siguientes entradas:");
       ListaCantantesFamosos.listar();
       ListaCantantesFamosos.preguntar();
       
    }
}

Gracias como siempre por vuestro increible apoyo, espero vuestros consejos.

15
Muchísimas gracias Erik_Escriche. Otra vez por no fijarme y dar las cosas por suponidas ;).
Error corregido y ya no sale el warning.
Gracias también ESOJ pero lo que quiero saber es que *os significa compilar con lo que sea  que signifique el modificador ese Xllntunchecked y como se hace.

16
Hola de nuevo ESOJ y muchas gracias otra vez por tu ayuda, ya te dije en:

https://www.aprenderaprogramar.com/foros/index.php?topic=5726.0

que lo del tipo ArrayList en la signatura de métodos me iba a cambiar la vida ;D.
La verdad es que compliqué la clase Test adrede por que quería jugar a llamar métodos, aunque reconozco que de no ser así, por lo menos con mis conocimientos actuales, quizá no me hubiera quedado tan elegante como el tuyo en un solo bucle while.
Lo de empeñarme en poner el método mostrarLista en el main de la clase Test es porque así lo especificaba el enunciado del ejercicio, o eso entendí yo:
Citar
Crea una clase test con el método main que inicialice un objeto ListaCantantesFamosos y usando un for extendido muestre los cantantes en la lista por pantalla. Se debe pedir al usuario un nombre más de cantante famoso, y una vez introducido mostrar la lista actualizada usando un for extendido.
.
Hoy me has enseñado, además, que puedo usar los métodos directamente sin usar variables intermedias como parametros de otros métodos, con lo que ahorras varias líneas  y se simplifica mucho el código, que aunque no os lo creáis por el de este ejercicio sigue siendo mi  objetivo  ::). Hasta pronto a todos.
P.D. ¿Alguien sabe porqué me sale el warning?.

17
Aprender a programar desde cero / Re:Código java ejercicio CU00665B
« en: 26 de Diciembre 2016, 10:16 »
Muchas gracias ESOJ, me has ayudado mucho. No se me habriá ocurrido usar ArrayList<String> como tipo en la signatura de un  método. Eso me ha hecho tener una visión nueva y entender muchas cosas. Gracias  otra vez  ;).

18
Hola a todos. Ya sé que son fechas señaladas para muchos pero yo sigo totalmente enganchado a ésto y no puedo parar. Éste es el código que he realizado para este ejercicio. Estoy contento de como me ha quedado con su bucle for-each en el método main de la clase Test y todo  ;D...pero con muchas dudas. Quería probar a usar un método para cada cosa pero con eso del static del main me he visto obligado a poner static en todas la variables y métodos, ¿Es eso correcto o dará algún problema ?.
Cuando compilo la clase Test me sale un warnig que no entiendo (lo entiendo pero no lo comprendo  ???) , aún así todo funciona.

C:\....\TestListaCantantesFamosos.java uses unchecked or unsafe operations. Recompile with -Xllntunchecked ror(sic) detalls (sic).

Aquí la clase ListaCantantesFamosos.

Código: [Seleccionar]
import java.util.*;
public class ListaCantantesFamosos {
    private ArrayList<String> lista1;
   
    public ListaCantantesFamosos () {
        lista1 = new ArrayList<String> ();
        lista1.add("Pepe"); 
        lista1.add("Juan");
        lista1.add("Jaime");
    }
   
    public String getNombre (int pos) {return lista1.get(pos);}
   
    public void addCant (String name) {lista1.add(name);}
   
    public int sizeList () {return lista1.size();}
}

Y aquí la reina de mis ojos  ;), la clase TestListaCantantesFamosos.

Código: [Seleccionar]
import java.util.*;

public class TestListaCantantesFamosos {
    static String entrada = "";
    static ListaCantantesFamosos lista2 = new ListaCantantesFamosos();//este static me parecía raro
    static String tec = "";
    static boolean si = true;
   
    public  static void scan1 () {
        System.out.println ("Por favor introduzca nombre de famoso");
        Scanner scanner1 = new Scanner (System.in);
        entrada = scanner1.nextLine ();
        lista2.addCant(entrada);
    }

    public  static void pedirNombre() {       
        System.out.println ("¿Desea introducir otro nombre?: Sí, No");
        Scanner ent = new Scanner (System.in);
        tec = ent.nextLine();
        TestListaCantantesFamosos.eval();
    }

    public static void eval ()   {

        if (tec.equalsIgnoreCase("sí") || tec.equalsIgnoreCase("si") ){

            TestListaCantantesFamosos.scan1();

        }
        else if (tec.equalsIgnoreCase("no")){si = false;}

        else {
            System.out.println ("Entrada no válida");
            TestListaCantantesFamosos.pedirNombre(); 
       
        }
    }

    public static void main(String [] args) {

        TestListaCantantesFamosos.scan1();

        TestListaCantantesFamosos.scan1();
       
            do {
                TestListaCantantesFamosos.pedirNombre();

            } while (si == true);

            System.out.println ("La lista contiene los nombres siguientes:");
            ArrayList<String> lista3 = new ArrayList();
            int i = 0;
            for (i = 0; i < lista2.sizeList();i++) {
                lista3.add(lista2.getNombre(i));
            }
            for (String a:lista3){
                System.out.println (a);
            }
            System.out.println ("Fin del programa.Gracias por su participación");
        }

    }
Gracias de nuevo por vuestro apoyo y paciencia...  y Bon Nadal desde Valencia. (despedida con rima :P)

19
Hola de nuevo, yo ahora liado con esto de los ArrayList pido vuestra opinión sobre mi código para este ejercicio CU00665B del curso de fundamentos de programación Java.

La primera clase, la de la lista, sería:

Código: [Seleccionar]

import java.util.*;
public class ListaCantantesFamosos {
    private ArrayList<String> lista1;
   
    public ListaCantantesFamosos () {
        lista1 = new ArrayList<String> ();
        lista1.add("Pepe"); 
        lista1.add("Juan");
        lista1.add("Jaime");
    }
   
    public String getNombre (int pos) {return lista1.get(pos);}
   
    public void addCant (String name) {lista1.add(name);}
   
    public int sizeList () {return lista1.size();}
}
       
Y la segunda, la del Test, es ésta:
Código: [Seleccionar]

import java.util.*;
public class TestListaCantantesFamosos {

    public static void main(String [] args) {
        ListaCantantesFamosos lista2 = new ListaCantantesFamosos();
        String entrada = "";
       
        System.out.println ("Por favor introduzca nombre de famoso nº 1");
        Scanner scanner1 = new Scanner (System.in);
        entrada = scanner1.nextLine ();
        lista2.addCant(entrada);
       
        System.out.println ("Por favor introduzca nombre de famoso nº 2");
        Scanner scanner2 = new Scanner (System.in);
        entrada = scanner2.nextLine ();
        lista2.addCant(entrada);
        System.out.println ("La lista contiene los nombres siguientes:");
       
        int i = 0;
        for (i = 0; i < lista2.sizeList();i++) {
            System.out.println (lista2.getNombre(i));
        }
        System.out.println ("Fin del programa");
    }
}

Gracias como siempre por vuestra ayuda. Es increible lo que conseguís con este sitio. :o

20
Aprender a programar desde cero / Re:Ejercicio JAVA CU00662B
« en: 23 de Diciembre 2016, 10:15 »
Gracias por tu rápida y útil respuesta. Tu código es más bonito y se paraece a lo que pensaba que se podía hacer. No se me habría ocurrido usar comparadores en la sentencia for, buen detalle.

Páginas: [1] 2

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".