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.


Temas - el_calderas

Páginas: [1] 2
1
Hola, tengo una duda con la solución de uno de los ejercicios resueltos de la unidad CU00907C.

En el ejercicio piden esto:

"Crear el código de un programa en el que se declaran tres variables tipo int a, b y c, cuyo valor se muestra en pantalla y debe estar comprendido entre cero y 100, utilizando el método nextInt de la clase Random."

Este es el codigo de la solución:
Código: [Seleccionar]
/* Ejemplo uso clase Random() – aprenderaprogramar.com */
import java.util.Random;
public class Programa {
public static void main(String arg[]) {
int a, b, c;
Random rnd = new Random();
a = rnd.nextInt(101);
b = rnd.nextInt(101);
c = rnd.nextInt(101);
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
}


Mi duda es, en la unidad 906C se dice que si se necesitan números aleatorios dentro de un rango hay que aplicar la formula:

"(int) (rnd.nextDouble() * cantidad_números_rango + término_inicial_rango)"

El casting con el int, en este caso no seria necesario...

Segun esto, yo el codigo que habria escrito es:

Código: [Seleccionar]
import java.util.Random;
public class Programa {
public static void main(String arg[]) {
int a, b, c;
Random rnd = new Random();
a = rnd.nextInt()*101;
b = rnd.nextInt()*101;
c = rnd.nextInt()*101;
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
}

Pero con este codigo, los numeros generados son positivos o negativos y fuera del rango [0-100]...¿Por qué?

¿Porque se utiliza en la solución oficial el total de números del rango como parametro del nexInt()?

Muchas gracias por las respuestas.

2
Hola,

esta es mi solución para este ejercicio.


Clase Persona:

Código: [Seleccionar]
public class Persona
{
    private String nombre;
    private String apellidos;
    private int edad;
   
    public Persona() {
        nombre = "";
        apellidos = "";
        edad = 0;
    }

    public Persona (String nombre, String apellidos, int edad) {
        this.nombre = nombre;
        this.apellidos = apellidos;
        this.edad = edad;
    }

    public String getNombre() {
        return nombre;
    }

    public String getApellidos() {
        return apellidos;
    }

    public int getEdad() {
        return edad;
    }

    public String toString() {
        Integer datoEdad = edad;
        return "-Nombre: ".concat(nombre).concat("\n").concat("-Apellidos: ").concat(apellidos).concat("\n").concat("-Edad: ").concat(datoEdad.toString());
    }
}

Clase Legislador:
Código: [Seleccionar]
public abstract class Legislador extends Persona
{
    protected String provinciaQueRepresenta;
    //protected String camaraEnQueTrabaja;
   
    public Legislador(String nombre, String apellidos, int edad, String provincia){
        super(nombre, apellidos, edad);
        provinciaQueRepresenta=provincia;
    }
   
    /**
    public void setCamaraEnQueTrabaja(String camara){
        camaraEnQueTrabaja=camara;
    }
    */
   
    public abstract String getCamaraEnQueTrabaja();
   
    public String toString(){
        return super.toString().concat("\n").concat("-Provincia que representa: ").concat(this.provinciaQueRepresenta);
    }
}

clase Diputado:
Código: [Seleccionar]
public class Diputado extends Legislador
{
    private static final String CAMARA="Congreso";
   
    public Diputado(String nombre, String apellidos, int edad, String provincia){
        super(nombre,apellidos,edad,provincia);
    }
   
    public String getCamaraEnQueTrabaja() {
        return CAMARA;
    }
   
    public String getProvinciaQueRepresenta(){
        return super.provinciaQueRepresenta;
    }
   
    public String toString(){
        return super.toString().concat("\n").concat("-Camara en la que trabaja: ").concat(getCamaraEnQueTrabaja().concat("\n"));
    }
}

Clase senador:
Código: [Seleccionar]
public class Senador extends Legislador
{
    private static final String CAMARA="Senado";
   
    public Senador(String nombre, String apellidos, int edad, String provincia){
        super(nombre,apellidos,edad,provincia);
    }
   
    public String getCamaraEnQueTrabaja() {
        return CAMARA;
    }
   
    public String getProvinciaQueRepresenta(){
        return super.provinciaQueRepresenta;
    }
   
    public String toString(){
        return super.toString().concat("\n").concat("-Camara en la que trabaja: ").concat(getCamaraEnQueTrabaja()).concat("\n");
    }
}

Y clase main:
Código: [Seleccionar]
import java.util.ArrayList;

public class MainClass
{
    public static void main(String[] Argas){
        Diputado diputado1=new Diputado("Juan", "Martinez", 35, "Madrid");
        Diputado diputado2=new Diputado("Carlos", "Goñi", 39, "Valencia");
        Diputado diputado3=new Diputado("Alberto", "deMiguel", 44, "Barcelona");
        Diputado diputado4=new Diputado("Juan", "Corbalan", 45, "cadiz");
        Senador senador1=new Senador("Alberto", "Rodriguez", 45, "Salamanca");
        Senador senador2=new Senador("Daniel", "Diaz", 55, "Galicia");
        Senador senador3=new Senador("David", "Gomez", 39, "Burgos");
        Senador senador4=new Senador("Julio", "Prieto", 54, "Murcia");
       
        ArrayList<Legislador> listaLagisladores=new ArrayList<>();
       
        listaLagisladores.add(diputado1);
        listaLagisladores.add(diputado2);
        listaLagisladores.add(diputado3);
        listaLagisladores.add(diputado4);
        listaLagisladores.add(senador1);
        listaLagisladores.add(senador2);
        listaLagisladores.add(senador3);
        listaLagisladores.add(senador4);
       
        for(Legislador tmp:listaLagisladores){
            System.out.println(tmp.toString());
        }
    }
}

Un saludo.

3
Hola, aquí dejo mi solución a este ejercicio.

No me he liado mucho y he creado, como dice el texto, una clase padre con un atributo que heredan las clases hijas, las cuales solo difieren por el cuerpo del metodo propio.

Para sobreescibir el metodo en las clases hijas, he incluido el mismo metodo en la clase padre pero con una salida nula (0.0).


Clase Figura:

Código: [Seleccionar]
public class Figura
{
    protected static final double Pi=3.14;
    protected double dimensionPrincipal;
   
    public Figura (double d){
        dimensionPrincipal=d;
    }
   
    public double getDimensionPrincipal(){
        return dimensionPrincipal;
    }
   
    public double calcularArea(){
        return 0.0;
    }

       
}


Clase Cuadrado:

Código: [Seleccionar]
public class Cuadrado extends Figura
{
    //no tiene atributos propios
    public Cuadrado (double d){
        super(d);
    }
   
    //solo tiene metodo propio
    //la dimension principal de un cuadrado es el lado
    //el area de un cuadrado es el lado al cuadrado.
    public double calcularArea(){
        return (super.getDimensionPrincipal()*super.getDimensionPrincipal());
    }
   
    public boolean equals(Object obj){
        if(obj instanceof Cuadrado){
            Cuadrado tmp=(Cuadrado)obj;
            if(super.dimensionPrincipal==(tmp.dimensionPrincipal)){
                return true;
            }else{
                return false;
            }
        }
        return false;
    }

}


Clase Circulo:

Código: [Seleccionar]
public class Circulo extends Figura
{
    //no tiene atributos propios
   
    public Circulo(double d){
        super(d);
    }
   
    //solo tiene metodo propio
    //la dimension principàl seria el radio
    //el area de un circulo se calcula multiplicando pi por el radio al cuadrado.
   
    public double calcularArea(){
        return ((super.getDimensionPrincipal()*super.getDimensionPrincipal())*Pi);
    }
   
    public boolean equals(Object obj){
        if(obj instanceof Circulo){
            Circulo tmp=(Circulo)obj;
            if(super.dimensionPrincipal==(tmp.dimensionPrincipal)){
                return true;
            }else{
                return false;
            }
        }
        return false;
    }
}


Clase main:

Código: [Seleccionar]
public class TestEquals
{
    public static void main(String[] Argas){
        Figura cuadrado1=new Cuadrado(2);
        Figura cuadrado2=new Cuadrado(5);
        Figura cuadrado3=new Cuadrado(2.1);
        Figura cuadrado4=new Cuadrado(2.0);
        Figura circulo1=new Circulo(2.5);
        Figura circulo2=new Circulo(2.8);
        Figura circulo3=new Circulo(4);
        Figura circulo4=new Circulo(2.5);
       
       
        System.out.println("El area del cuadrado1 es: "+ cuadrado1.calcularArea());
        System.out.println("El area del cuadrado2 es: "+ cuadrado2.calcularArea());
        System.out.println("El area del cuadrado3 es: "+ cuadrado3.calcularArea());
        System.out.println("El area del cuadrado4 es: "+ cuadrado4.calcularArea());
        System.out.println("El area del circulo1 es: "+ circulo1.calcularArea());
        System.out.println("El area del circulo2 es: "+ circulo2.calcularArea());
        System.out.println("El area del circulo3 es: "+ circulo3.calcularArea());
        System.out.println("El area del circulo4 es: "+ circulo4.calcularArea());
        System.out.println("¿Son iguales el cuadrado1 y el cuadrado2?: " + cuadrado1.equals(cuadrado2));
        System.out.println("¿Son iguales el cuadrado1 y el cuadrado3?: " + cuadrado1.equals(cuadrado3));
        System.out.println("¿Son iguales el cuadrado1 y el cuadrado4?: " + cuadrado1.equals(cuadrado4));
        System.out.println("¿Son iguales el circulo1 y el circulo2?: " + circulo1.equals(circulo2));
        System.out.println("¿Son iguales el circulo1 y el circulo3?: " + circulo1.equals(circulo3));
        System.out.println("¿Son iguales el circulo1 y el circulo4?: " + circulo1.equals(circulo4));
    }
   
}

Un saludo y espero vuestros comentarios/consejos.

4
Hola, Esta es mi solución para este ejercicio.

He utilizado todo el codigo del ejercicio anterior, sin modificarlo, añadiendo las clases que pide el ejercicio.

En el main, se puede añadir un array para guardar los distintos envios que se creen pero no lo he implementado asi ya que tampoco lo veo necesario....me he atenido a lo que pide el ejercicio.

Estas son las clases nuevas:


EnvioDeProductos:

Código: [Seleccionar]
import java.util.ArrayList;
import java.util.List;
import java.util.Iterator;

public class EnvioDeProductos
{
    private static int nEnvio=0;
    private Integer nProductos;
    private List<Producto> envio;
   
    public EnvioDeProductos(){
        envio=new ArrayList<Producto>();
        nEnvio++;
        nProductos=0;
    }
   
       
    public void addProductoAlEnvio(Producto p){
        envio.add(p);
        nProductos++;
    }
   
    public Integer getCantidadproductos(){
        return nProductos;
    }
       
    public void contenidoEnvio(){
        Iterator <Producto> it=envio.iterator();
        Producto p;
        while(it.hasNext()){
            p=it.next();
            System.out.println(p);
        }
    }
           
   
}


TestHerencia4:


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

public class TestHerencia4
{
   public static void main(String[] args){
        //se crea una lista para contener todos los productos
        ArrayList<Producto> listaProductos=new ArrayList<Producto>();
               
        //se crean los productos
       
        //parametros del fresco
        //String fechaCaducidad, int numeroLote,String paisOrigen, String fechaEnvasado
        //Crear 2
        Fresco productoFresco1 = new Fresco("12/2/16", 565, "España", "1/1/16");
        listaProductos.add(productoFresco1);
        Fresco productoFresco2 = new Fresco("12/5/18", 456, "España", "1/5/15");
        listaProductos.add(productoFresco2);
        //parametros del refrigerado:
        //String fechaCaducidad, int numeroLote,String paisOrigen, String fechaEnvasado, double temperaturaMantenimiento, String codigo
        //crear 3
        Refrigerado productoRefrigerado1 = new Refrigerado("12/8/18", 2300,"España", "13/5/14", 4, "B35-267");
        listaProductos.add(productoRefrigerado1);
        Refrigerado productoRefrigerado2 = new Refrigerado("12/8/17", 2385,"España", "7/3/15", 5, "Z85-29");
        listaProductos.add(productoRefrigerado2);
        Refrigerado productoRefrigerado3 = new Refrigerado("1/3/16", 123,"España", "4/1/15", -1, "T3-45");
        listaProductos.add(productoRefrigerado3);
        //parametros del congelado por aire
        //String fechaCaducidad, int numeroLote, String paisOrigen, String fechaEnvasado, double temperaturaMantenimiento, String composiciónAire
        //composición del aire: %nitrogeno,%oxigeno,%dioxido de carbono,%vapor de agua
        //crear 2
        Congelado congeladoAire1 = new CongeladoAire("12/8/18", 2300,"España", "13/5/14", -25.0,"Nitrogeno:78%%,Oxigeno:21%%,Dioxido de carbono:0,03%%,Vapor de agua:variable");
        listaProductos.add(congeladoAire1);
        Congelado congeladoAire2 = new CongeladoAire("12/8/16", 4524,"España", "10/11/14", -25.0,"Nitrogeno:78%%,Oxigeno:21%%,Dioxido de carbono:0,03%%,Vapor de agua:variable");
        listaProductos.add(congeladoAire2);
        //parametros congelado por agua
        //String fechaCaducidad, int numeroLote, String paisOrigen, String fechaEnvasado, double temperaturaMantenimiento, String salinidadAgua
        //salinidad del agua: gr/litro
        //crear 2
        Congelado congeladoAgua1 = new CongeladoAgua("1/3/15", 56,"España", "1/3/16", -20.0,"<0,5g/l");
        listaProductos.add(congeladoAgua1);
        Congelado congeladoAgua2 = new CongeladoAgua("12/2/15", 89,"España", "12/2/16", -20.0,"<0,5g/l");
        listaProductos.add(congeladoAgua2);
        //parametros congelado por nitrogeno
        //String fechaCaducidad, int numeroLote, String paisOrigen, String fechaEnvasado, double temperaturaMantenimiento, String metodoCongelacion,int tiempoExposicion
        //crear 1
        Congelado congeladoNitrogeno = new CongeladoNitrogeno("1/3/15", 32,"España", "1/3/16", -30.0,"Tunel de refrigeración",300);
        listaProductos.add(congeladoNitrogeno);
       
        //se crea un envio y se añaden los productos al envio
        EnvioDeProductos envio = new EnvioDeProductos();
        for(Producto p : listaProductos){
            envio.addProductoAlEnvio(p);
        }
       
       
        //Se imprime la información del envio
        System.out.println("Número de productos en el envio: " + envio.getCantidadproductos());
        System.out.println("Información de los productos contenidos en el envio: ");
        envio.contenidoEnvio();
    }
}


Y el resto de clases reutilizadas:

clase Producto:


Código: [Seleccionar]
public class Producto
{
    private String fechaCaducidad;
    private int numeroLote;
    private String paisOrigen;
    private String fechaEnvasado;
   
    public Producto(String fechaCaducidad, int numeroLote, String paisOrigen, String fechaEnvasado){
        this.fechaCaducidad=fechaCaducidad;
        this.numeroLote=numeroLote;
        this.paisOrigen=paisOrigen;
        this.fechaEnvasado=fechaEnvasado;
    }
   
    public String getFechaCaducidad(){
        return fechaCaducidad;
    }
   
    public int getNumeroLote(){
        return numeroLote;
    }
   
    public void setFechaCducidad(String fecha){
        fechaCaducidad=fecha;
    }
   
    public void setNumeroLote(int numero){
        numeroLote=numero;
    }
   
    public String getPaisOrigen(){
        return paisOrigen;
    }
   
    public String getFechaEnvasado(){
        return fechaEnvasado;
    }
   
    public void setPaisOrigen(String paisOrigen){
        this.paisOrigen=paisOrigen;
    }
   
    public void setFechaEnvasado(String fechaEnvasado){
        this.fechaEnvasado=fechaEnvasado;
    }
   
    @Override
    public String toString(){
        return String.format("Fecha de Caducidad: " + fechaCaducidad + "\n" +
        "Número de lote: " + numeroLote + "\n" +
        "Pais de origen: " + this.paisOrigen +"\n" +
        "Fecha de envasado: " + this.fechaEnvasado +"\n");
    }
}


Clase Fresco

Código: [Seleccionar]
public class Fresco extends Producto
{
    //esta clase no tiene atributos propios, los tiene la superclase
   
   
    public Fresco(String fechaCaducidad, int numeroLote,String paisOrigen, String fechaEnvasado){
        super(fechaCaducidad,numeroLote,paisOrigen,fechaEnvasado);
       
    }
   
   
   
    @Override
    public String toString(){
        return String.format("Información del producto fresco: \n" + super. toString());
    }
}


Clase congelado:

Código: [Seleccionar]
public class Congelado extends Producto
{
    //información generica
    private double temperaturaMantenimiento;
   
    public Congelado(String fechaCaducidad, int numeroLote, String paisOrigen, String fechaEnvasado, double temperaturaMantenimiento){
        super(fechaCaducidad,numeroLote,paisOrigen,fechaEnvasado);
        this.temperaturaMantenimiento=temperaturaMantenimiento;
    }
   
    public double getTemperaturaMantenimiento(){
        return temperaturaMantenimiento;
    }
   
    public void setTemperaturaMantenimiento(double temperaturaMantenimiento){
        this.temperaturaMantenimiento=temperaturaMantenimiento;
    }
   
    @Override
    public String toString(){
        return String.format(super. toString() +
        "Temperatura de mantenimiento: " + this.temperaturaMantenimiento + "ºC" + "\n");
    }
}


clase refrigerado:

Código: [Seleccionar]
public class Refrigerado extends Congelado
{
   //información especifica
   private String codigo;
   
   public Refrigerado(String fechaCaducidad, int numeroLote,String paisOrigen, String fechaEnvasado, double temperaturaMantenimiento, String codigo){
       super(fechaCaducidad,numeroLote,paisOrigen,fechaEnvasado,temperaturaMantenimiento);
       this.codigo=codigo;
    }
   
    public String getCodigo(){
        return codigo;
    }
   
    public void setCodigo(String codigo){
        this.codigo=codigo;
    }
   
    @Override
    public String toString(){
        return String.format("Información del producto refrigerado: \n" +
        super. toString() +
        "Codigo OSA: " + this.codigo +"\n" );
    }
}


Clase congelado por aire:

Código: [Seleccionar]
public class CongeladoAire extends Congelado
{
    private String composiciónAire;
   
    public CongeladoAire(String fechaCaducidad, int numeroLote, String paisOrigen, String fechaEnvasado, double temperaturaMantenimiento, String composiciónAire){
        super(fechaCaducidad, numeroLote, paisOrigen, fechaEnvasado,temperaturaMantenimiento);
        this.composiciónAire=composiciónAire;
    }
   
    public void setComposiciónAire(String composiciónAire){
        this.composiciónAire=composiciónAire;
    }
   
    public String getComposiciónAire(){
        return this.composiciónAire;
    }
       
   
    @Override
    public String toString(){
        return String.format("Información del producto congelado por aire: \n"+
        super.toString() +
        "Composición de aire: " + this.composiciónAire + "\n");
    }
   
}


clase congelado por agua:


Código: [Seleccionar]
public class CongeladoAgua extends Congelado
{
    private String salinidadAgua;
   
    public CongeladoAgua(String fechaCaducidad, int numeroLote, String paisOrigen, String fechaEnvasado, double temperaturaMantenimiento, String salinidadAgua){
        super(fechaCaducidad, numeroLote, paisOrigen, fechaEnvasado,temperaturaMantenimiento);
        this.salinidadAgua=salinidadAgua;
    }
   
    public void setSalinidadAgua(String salinidadAgua){
        this.salinidadAgua=salinidadAgua;
    }
   
    public String getSalinidadAgua(){
        return this.salinidadAgua;
    }
   
    @Override
    public String toString(){
        return String.format("Información del producto congelado por agua: \n"+
        super. toString() +
        "Salinidad del agua: " + this.salinidadAgua + "\n");
    }
       
}


clase congelado por nitrogeno:

Código: [Seleccionar]
public class CongeladoNitrogeno extends Congelado
{
    private String metodoCongelacion;
    private int tiempoExposicion;
   
    public CongeladoNitrogeno(String fechaCaducidad, int numeroLote, String paisOrigen, String fechaEnvasado, double temperaturaMantenimiento, String metodoCongelacion,int tiempoExposicion){
        super(fechaCaducidad, numeroLote, paisOrigen, fechaEnvasado,temperaturaMantenimiento);
        this.metodoCongelacion=metodoCongelacion;
        this.tiempoExposicion=tiempoExposicion;
    }
   
    @Override
    public String toString(){
        return String.format("Información del producto congelado por nitrogeno: \n"+
        super. toString() +
        "Metodo de congelación: " + this.metodoCongelacion + "\n" +
        "Tiempo de exposición al nitrogeno: " + this.tiempoExposicion + " segundos");
    }
       
}

Un saludo y gracias.

5
Hola, aquí está mi propuesta para este ejercicio.

He creado siete clases mas la clase del test. En el main se crea un ArrayList donde voy añadiendo los productos que doy de alta, para luego imprimir su información ayudandome de un for.

clase Producto:
Código: [Seleccionar]
public class Producto
{
    private String fechaCaducidad;
    private int numeroLote;
    private String paisOrigen;
    private String fechaEnvasado;
   
    public Producto(String fechaCaducidad, int numeroLote, String paisOrigen, String fechaEnvasado){
        this.fechaCaducidad=fechaCaducidad;
        this.numeroLote=numeroLote;
        this.paisOrigen=paisOrigen;
        this.fechaEnvasado=fechaEnvasado;
    }
   
    public String getFechaCaducidad(){
        return fechaCaducidad;
    }
   
    public int getNumeroLote(){
        return numeroLote;
    }
   
    public void setFechaCducidad(String fecha){
        fechaCaducidad=fecha;
    }
   
    public void setNumeroLote(int numero){
        numeroLote=numero;
    }
   
    public String getPaisOrigen(){
        return paisOrigen;
    }
   
    public String getFechaEnvasado(){
        return fechaEnvasado;
    }
   
    public void setPaisOrigen(String paisOrigen){
        this.paisOrigen=paisOrigen;
    }
   
    public void setFechaEnvasado(String fechaEnvasado){
        this.fechaEnvasado=fechaEnvasado;
    }
   
    @Override
    public String toString(){
        return String.format("Fecha de Caducidad: " + fechaCaducidad + "\n" +
        "Número de lote: " + numeroLote + "\n" +
        "Pais de origen: " + this.paisOrigen +"\n" +
        "Fecha de envasado: " + this.fechaEnvasado +"\n");
    }
}

Clase Fresco
Código: [Seleccionar]
public class Fresco extends Producto
{
    //esta clase no tiene atributos propios, los tiene la superclase
   
   
    public Fresco(String fechaCaducidad, int numeroLote,String paisOrigen, String fechaEnvasado){
        super(fechaCaducidad,numeroLote,paisOrigen,fechaEnvasado);
       
    }
   
   
   
    @Override
    public String toString(){
        return String.format("Información del producto fresco: \n" + super. toString());
    }
}

Clase congelado:
Código: [Seleccionar]
public class Congelado extends Producto
{
    //información generica
    private double temperaturaMantenimiento;
   
    public Congelado(String fechaCaducidad, int numeroLote, String paisOrigen, String fechaEnvasado, double temperaturaMantenimiento){
        super(fechaCaducidad,numeroLote,paisOrigen,fechaEnvasado);
        this.temperaturaMantenimiento=temperaturaMantenimiento;
    }
   
    public double getTemperaturaMantenimiento(){
        return temperaturaMantenimiento;
    }
   
    public void setTemperaturaMantenimiento(double temperaturaMantenimiento){
        this.temperaturaMantenimiento=temperaturaMantenimiento;
    }
   
    @Override
    public String toString(){
        return String.format(super. toString() +
        "Temperatura de mantenimiento: " + this.temperaturaMantenimiento + "ºC" + "\n");
    }
}

clase refrigerado:
Código: [Seleccionar]
public class Refrigerado extends Congelado
{
   //información especifica
   private String codigo;
   
   public Refrigerado(String fechaCaducidad, int numeroLote,String paisOrigen, String fechaEnvasado, double temperaturaMantenimiento, String codigo){
       super(fechaCaducidad,numeroLote,paisOrigen,fechaEnvasado,temperaturaMantenimiento);
       this.codigo=codigo;
    }
   
    public String getCodigo(){
        return codigo;
    }
   
    public void setCodigo(String codigo){
        this.codigo=codigo;
    }
   
    @Override
    public String toString(){
        return String.format("Información del producto refrigerado: \n" +
        super. toString() +
        "Codigo OSA: " + this.codigo +"\n" );
    }
}

Clase congelado por aire
Código: [Seleccionar]
public class CongeladoAire extends Congelado
{
    private String composiciónAire;
   
    public CongeladoAire(String fechaCaducidad, int numeroLote, String paisOrigen, String fechaEnvasado, double temperaturaMantenimiento, String composiciónAire){
        super(fechaCaducidad, numeroLote, paisOrigen, fechaEnvasado,temperaturaMantenimiento);
        this.composiciónAire=composiciónAire;
    }
   
    public void setComposiciónAire(String composiciónAire){
        this.composiciónAire=composiciónAire;
    }
   
    public String getComposiciónAire(){
        return this.composiciónAire;
    }
       
   
    @Override
    public String toString(){
        return String.format("Información del producto congelado por aire: \n"+
        super.toString() +
        "Composición de aire: " + this.composiciónAire + "\n");
    }
   
}

clase congelado por agua
Código: [Seleccionar]
public class CongeladoAgua extends Congelado
{
    private String salinidadAgua;
   
    public CongeladoAgua(String fechaCaducidad, int numeroLote, String paisOrigen, String fechaEnvasado, double temperaturaMantenimiento, String salinidadAgua){
        super(fechaCaducidad, numeroLote, paisOrigen, fechaEnvasado,temperaturaMantenimiento);
        this.salinidadAgua=salinidadAgua;
    }
   
    public void setSalinidadAgua(String salinidadAgua){
        this.salinidadAgua=salinidadAgua;
    }
   
    public String getSalinidadAgua(){
        return this.salinidadAgua;
    }
   
    @Override
    public String toString(){
        return String.format("Información del producto congelado por agua: \n"+
        super. toString() +
        "Salinidad del agua: " + this.salinidadAgua + "\n");
    }
       
}

clase congelado por nitrogeno
Código: [Seleccionar]
public class CongeladoNitrogeno extends Congelado
{
    private String metodoCongelacion;
    private int tiempoExposicion;
   
    public CongeladoNitrogeno(String fechaCaducidad, int numeroLote, String paisOrigen, String fechaEnvasado, double temperaturaMantenimiento, String metodoCongelacion,int tiempoExposicion){
        super(fechaCaducidad, numeroLote, paisOrigen, fechaEnvasado,temperaturaMantenimiento);
        this.metodoCongelacion=metodoCongelacion;
        this.tiempoExposicion=tiempoExposicion;
    }
   
    @Override
    public String toString(){
        return String.format("Información del producto congelado por nitrogeno: \n"+
        super. toString() +
        "Metodo de congelación: " + this.metodoCongelacion + "\n" +
        "Tiempo de exposición al nitrogeno: " + this.tiempoExposicion + " minutos");
    }
       
}

clase del main
Código: [Seleccionar]
import java.util.ArrayList;

public class TestHerencia3
{
    public static void main(String[] args){
        //se crea una lista para contener todos los productos
        ArrayList<Producto> listaProductos=new ArrayList<Producto>();
       
        //se crean los productos
       
        //parametros del fresco
        //String fechaCaducidad, int numeroLote,String paisOrigen, String fechaEnvasado
        //Crear 2
        Fresco productoFresco1 = new Fresco("12/2/16", 565, "España", "1/1/16");
        listaProductos.add(productoFresco1);
        Fresco productoFresco2 = new Fresco("12/5/18", 456, "España", "1/5/15");
        listaProductos.add(productoFresco2);
        //parametros del refrigerado:
        //String fechaCaducidad, int numeroLote,String paisOrigen, String fechaEnvasado, double temperaturaMantenimiento, String codigo
        //crear 3
        Refrigerado productoRefrigerado1 = new Refrigerado("12/8/18", 2300,"España", "13/5/14", 4, "B35-267");
        listaProductos.add(productoRefrigerado1);
        Refrigerado productoRefrigerado2 = new Refrigerado("12/8/17", 2385,"España", "7/3/15", 5, "Z85-29");
        listaProductos.add(productoRefrigerado2);
        Refrigerado productoRefrigerado3 = new Refrigerado("1/3/16", 123,"España", "4/1/15", -1, "T3-45");
        listaProductos.add(productoRefrigerado3);
        //parametros del congelado por aire
        //String fechaCaducidad, int numeroLote, String paisOrigen, String fechaEnvasado, double temperaturaMantenimiento, String composiciónAire
        //composición del aire: %nitrogeno,%oxigeno,%dioxido de carbono,%vapor de agua
        //crear 2
        Congelado congeladoAire1 = new CongeladoAire("12/8/18", 2300,"España", "13/5/14", -25.0,"Nitrogeno:78%%,Oxigeno:21%%,Dioxido de carbono:0,03%%,Vapor de agua:variable");
        listaProductos.add(congeladoAire1);
        Congelado congeladoAire2 = new CongeladoAire("12/8/16", 4524,"España", "10/11/14", -25.0,"Nitrogeno:78%%,Oxigeno:21%%,Dioxido de carbono:0,03%%,Vapor de agua:variable");
        listaProductos.add(congeladoAire2);
        //parametros congelado por agua
        //String fechaCaducidad, int numeroLote, String paisOrigen, String fechaEnvasado, double temperaturaMantenimiento, String salinidadAgua
        //salinidad del agua: gr/litro
        //crear 2
        Congelado congeladoAgua1 = new CongeladoAgua("1/3/15", 56,"España", "1/3/16", -20.0,"<0,5g/l");
        listaProductos.add(congeladoAgua1);
        Congelado congeladoAgua2 = new CongeladoAgua("12/2/15", 89,"España", "12/2/16", -20.0,"<0,5g/l");
        listaProductos.add(congeladoAgua2);
        //parametros congelado por nitrogeno
        //String fechaCaducidad, int numeroLote, String paisOrigen, String fechaEnvasado, double temperaturaMantenimiento, String metodoCongelacion,int tiempoExposicion
        //crear 1
        Congelado congeladoNitrogeno = new CongeladoNitrogeno("1/3/15", 32,"España", "1/3/16", -30.0,"Tunel de refrigeración",5);
        listaProductos.add(congeladoNitrogeno);
       
        // se llama a los metodos correspondientes para obtener la información de cada producto
        // prueba para imprimir información de cada producto
        /**
        System.out.println("Información del producto fresco \n" + productoFresco1.toString());
        System.out.println("Información del producto refrigerado \n" + productoRefrigerado1.toString());
        System.out.println("Información del producto congelado por aire \n" + congeladoAire1.toString());
        System.out.println("Información del producto congelado por agua \n" + congeladoAgua1.toString());
        System.out.println("Información del producto congelado por nitrogeno \n" + congeladoNitrogeno.toString());
        */
       
       //Se imprime la información de todos los productos creados
        for(Producto p : listaProductos){
            System.out.println(p);
        }
    }
}

Un saludo y gracias por la ayuda.

6
Hola, aqui os pongo mi solución para este ejercicio.

Citar
Se plantea desarrollar un programa Java que permita la gestión de una empresa agroalimentaria que trabaja con tres tipos de productos: productos frescos, productos refrigerados y productos congelados. Todos los productos llevan esta información común: fecha de caducidad y número de lote. A su vez, cada tipo de producto lleva alguna información específica. Los productos frescos deben llevar la fecha de envasado y el país de origen. Los productos refrigerados deben llevar el código del organismo de supervisión alimentaria. Los productos congelados deben llevar la temperatura de congelación recomendada. Crear el código de las clases Java implementando una relación de herencia desde la superclase Producto hasta las subclases ProductoFresco, ProductoRefrigerado y ProductoCongelado. Cada clase debe disponer de constructor y permitir establecer (set) y recuperar (get) el valor de sus atributos y tener un método que permita mostrar la información del objeto. Crear una clase testHerencia2 con el método main donde se cree un objeto de cada tipo y se muestren los datos de cada uno de los objetos creados.

En este caso, para representar la información de cada objeto, no he usado los metodos getter de cada objeto, si no que he sobrescrito el metodo toString() de cada objeto, para dar el formato que quiero a la salida de cada objeto.


Clase Producto:

Código: [Seleccionar]
public class Producto
{
    private String fechaCaducidad;
    private int numeroLote;
   
    public Producto(String fechaCaducidad, int numeroLote){
        this.fechaCaducidad=fechaCaducidad;
        this.numeroLote=numeroLote;
    }
   
    public String getFechaCaducidad(){
        return fechaCaducidad;
    }
   
    public int getNumeroLote(){
        return numeroLote;
    }
   
    public void setFechaCducidad(String fecha){
        fechaCaducidad=fecha;
    }
   
    public void setNumeroLote(int numero){
        numeroLote=numero;
    }
   
    @Override
    public String toString(){
        return String.format("Fecha de Caducidad: " + fechaCaducidad + "\n" +
        "Número de lote: " + numeroLote + "\n");
    }
}


clase Fresco

Código: [Seleccionar]
public class Fresco extends Producto
{
    private String paisOrigen;
    private String fechaEnvasado;
   
    public Fresco(String fechaCaducidad, int numeroLote,String paisOrigen, String fechaEnvasado){
        super(fechaCaducidad,numeroLote);
        this.paisOrigen=paisOrigen;
        this.fechaEnvasado=fechaEnvasado;
    }
   
    public String getPaisOrigen(){
        return paisOrigen;
    }
   
    public String getFechaEnvasado(){
        return fechaEnvasado;
    }
   
    public void setPaisOrigen(String paisOrigen){
        this.paisOrigen=paisOrigen;
    }
   
    public void setFechaEnvasado(String fechaEnvasado){
        this.fechaEnvasado=fechaEnvasado;
    }
   
    @Override
    public String toString(){
        return String.format(super. toString() +
        "Pais de origen: " + this.paisOrigen +"\n" +
        "Fecha de envasado: " + this.fechaEnvasado +"\n");
    }
}


Clase Refrigerado

Código: [Seleccionar]
public class Refrigerado extends Producto
{
   //información especifica
   private String codigo;
   
   public Refrigerado(String fechaCaducidad, int numeroLote, String codigo){
       super(fechaCaducidad,numeroLote);
       this.codigo=codigo;
    }
   
    public String getCodigo(){
        return codigo;
    }
   
    public void setCodigo(String codigo){
        this.codigo=codigo;
    }
   
    @Override
    public String toString(){
        return String.format(super. toString() +
        "Codigo OSA: " + this.codigo +"\n" );
    }
}


Clase congelado

Código: [Seleccionar]
public class Congelado extends Producto
{
    //información generica
    private double temperaturaCongelación;
   
    public Congelado(String fechaCaducidad, int numeroLote, double temperaturaCongelación){
        super(fechaCaducidad,numeroLote);
        this.temperaturaCongelación=temperaturaCongelación;
    }
   
    public double getTemperaturaCongelación(){
        return temperaturaCongelación;
    }
   
    public void setTemperaturaCongelación(double temperaturaCongelación){
        this.temperaturaCongelación=temperaturaCongelación;
    }
   
    @Override
    public String toString(){
        return String.format(super. toString() +
        "Temperatura de congelación: " + this.temperaturaCongelación + "\n");
    }
}


Clase testherencia2

Código: [Seleccionar]
public class TestHerencia2
{
    public static void main(String[] args){
        //se crean los productos
        Fresco productoFresco = new Fresco("12/2/16", 565, "España", "1/1/16");
        Refrigerado productoRefrigerado = new Refrigerado("12/8/16", 235, "B345-23");
        Congelado productoCongelado = new Congelado ("2/5/16", 4567, -24);
        // se llama a los metodos correspondientes para obtener la información de cada producto
       
        System.out.println("Información del producto fresco \n" + productoFresco.toString());
        System.out.println("Información del producto refrigerado \n" + productoRefrigerado.toString());
        System.out.println("Información del producto congelado \n" + productoCongelado.toString());
    }

}

Un saludo y gracias.


7
Hola, adjunto el codigo de las siete clases que creo que formarian el esquema de las relaciones de herencia y uso.

Código: [Seleccionar]
public class Producto
{
    protected String fechaCaducidad;
    protected int numeroLote;
   
    public Producto(){
        fechaCaducidad="";
        numeroLote=-1;
    }
   
    //metodos setters y getters genericos
}

Código: [Seleccionar]
public class Fresco extends Producto
{
    //información especifica
}

Código: [Seleccionar]
public class Refrigerado extends Producto
{
   //información especifica
}

Código: [Seleccionar]
public class Congelado extends Producto
{
    //información generica
}

Código: [Seleccionar]
public class CongeladoNitrogeno extends Congelado
{
    private double temperaturaCongelación;
   
    //constructor
   
    //metodos
   
}

Código: [Seleccionar]
public class CongeladoAire extends Congelado
{
     private double temperaturaCongelación;
   
    //constructor
   
    //metodos
}

Código: [Seleccionar]
public class CongeladoAgua extends Congelado
{
     private double temperaturaCongelación;
   
    //constructor
   
    //metodos
}

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

public class Envio
{
   private String listaEnvios;   //nombre de la lista de envios
   ArrayList<Producto> miEnvio=new ArrayList<Producto>(); //array de envios
   
}

Espero  que sea esto lo que se pedia en este ejercicio...
Un saludo.

8
Para este ejercicio estas son mis respuestas:

1) El error que recibimos es que la variable no estatica this no se puede referenciar desde  un metodo estatico.

2)los metodos de clase estaticos no pueden invocar a un metodo de instancia de la misma clase, que es lo que esta haciendo this.getAtrib().

3)la solución seria crear una clase que contuviera el parametro atributo1 y el metodo getAtrib1

Código: [Seleccionar]
public class Atributo
{
    int atributo1;
   
    public Atributo(){
        atributo1=0;
    }
   
    public int getAtrib1(){
        return atributo1;
    }
   
}

Código: [Seleccionar]
public class NuevoTest
{   
    public static void main (String[] Args){
        Atributo atrib=new Atributo();
       
        System.out.println("Mensaje 1");
        System.out.println("Atributo 1 vale " + atrib.getAtrib1());
    }
}

Un saludo.

9
Hola,

Aqui dejo me solución a este ejercicio. He dado por cierto que el peso que nos da el ejercicio es el peso de un palet con el tipo de piedra correspondiente...

Código: [Seleccionar]
public enum TipoDePiedra
{
    CALIZA(1200),
    MARMOL(1423.55f),
    PIZARRA(1325),
    CUARZITA(1466.22f);
   
    //campo tipo constante
   
    private float pesoEspecifico;
   
    //constructor
    TipoDePiedra(float pesoEspecifico){
        this.pesoEspecifico=pesoEspecifico;
    }
   
    public float getPesoEspecifico(){
        return this.pesoEspecifico;
    }
   
   
}

Código: [Seleccionar]
public class TestTiposEnumerados
{
   public static void main(String[] args){
       TipoDePiedra piedra=TipoDePiedra.CALIZA; //se dra el objeto de tipo enumerado
       
       System.out.println("Estos son los pesos de los palets de cada tipo de piedra\n");
       for(TipoDePiedra aux:piedra.values()){
           System.out.println("el palet de " + aux.toString() + " pesa " + aux.getPesoEspecifico()+ " kg");
        }
    }
}

Un saludo.

10
Hola,
os dejo para que comprobeis mi respuesta a este ejercicio.
He utilizado la clase vehiculo y la clase EntradaDeTeclado, de otros ejercicios.

Código: [Seleccionar]
public class Vehiculo
{
    public enum MarcaDeVehiculo {FORD, TOYOTA, SUZUKI, RENAULT, SEAT};
    private String matricula;
    private MarcaDeVehiculo marca;

    public Vehiculo(){
    }

    public void setMatricula(String matricula){
        this.matricula=matricula;
    }

    public String getMatricula(){
        return this.matricula;
    }

    public void setMarca(MarcaDeVehiculo marca){
        this.marca=marca;
    }

    public MarcaDeVehiculo getMarca(){
        return marca;
    }

    public boolean comprobarMarca(){
        boolean done=true;
        marca=MarcaDeVehiculo.FORD;//se crea el objeto MarcaDeVehiculo
        EntradaDeTeclado entrada1=new EntradaDeTeclado();//se introduce una marca de coche
        for(MarcaDeVehiculo aux:marca.values()){
            if(entrada1.getEntrada().toString().equals(aux.toString().toLowerCase())){
                this.marca=aux; //La marca introducida se asigna a la variable marca.
                return done;
            }
        }
        return done=false;
    }

}

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

public class EntradaDeTeclado
{
    private String entradaTeclado; //variable de instancia(campo) de ´la clase
   
    public EntradaDeTeclado(){ //constructor
        entradaTeclado=""; //inicializamos la instancia de la clase
        pedirEntrada(); // Esto es una llamada a un método interno. Al crear un objeto automaticamente, ejecutamos el metodo
    }
   
    public void pedirEntrada(){ //metodo de la clase
        Scanner entradaEscaner=new Scanner(System.in);
        entradaTeclado=entradaEscaner.nextLine();
    }
   
    public String getEntrada(){
        return entradaTeclado;
    }
       
 }

Código: [Seleccionar]
public class TestTipoEnum
{
    public static void main(String[] Args){
        Vehiculo.MarcaDeVehiculo marca=Vehiculo.MarcaDeVehiculo.SEAT;
        //marca=MarcaDeVehiculo.SEAT;//¿siempre hay que declarar el tipo dandole un valor?
        Vehiculo coche=new Vehiculo();

        System.out.println("Iniciamos el test\nIntroduce una de estas marca de coche");
        for(Vehiculo.MarcaDeVehiculo aux:marca.values()){
            System.out.println(aux.toString() + "\t");
        }


        while(!coche.comprobarMarca()){ //se comprueba que la marca de coche sea correcta
            System.out.println("la marca introducida no es correcta, vuelve a intentarlo");
        }

        System.out.println("Ahora introduce una matricula");
        EntradaDeTeclado entrada2=new EntradaDeTeclado();

        coche.setMatricula(entrada2.getEntrada());
        System.out.println("la marca que has elegido es " + coche.getMarca().toString() + " y su matricula es " + coche.getMatricula() );
       
    }

}

Ahora unas preguntas:
- ¿siempre que se cree un tipo enumerado hay que asignarle un valor de los que posee el enumerado?

- ¿porque, a pesar de utilizar \t para escribir la lista de marcas del enumerado, las marcas salen una debajo de otra y no una al lado de la otra, como esperaba?

Muchas gracias por vuestra ayuda y consejos.
Un saludo.

11
Hola,
Esta es mi solución para este ejercicio, pero tengo una duda respecto al enunciado y no se si es correcto.El ejercicio pide una salida de texto concreta, Sol ,Luna, Saturno, 8, 5, 2.
Pero la salida que devuelve el objeto iterator es Luna, Saturno, Sol, 2, 5, 8. ya que llas clases HasNext y TreeSet ordenan internamente los objetos que se les añaden.
¿El ejercicio pide que la salida sea en concreta la que pide? es decir, colocando en un orden determinado cada componente.

Este es mi codigo:

Código: [Seleccionar]
import java.util.HashSet;
import java.util.TreeSet;
import java.util.ArrayList;
import java.util.Set;
import java.util.Iterator;

public class TestVariablePolimorfica
{
    public static void main(String[]args){
        ArrayList<Set>miLista=new ArrayList<Set>();
        HashSet<String>miListaDeStrings=new HashSet<String>();
        TreeSet<Integer>miListaDeIntegers=new TreeSet<Integer>();

        miListaDeStrings.add("luna");
        miListaDeStrings.add("sol");
        miListaDeStrings.add("saturno");

        miListaDeIntegers.add(2);
        miListaDeIntegers.add(8);
        miListaDeIntegers.add(5);

        miLista.add(miListaDeStrings);
        miLista.add(miListaDeIntegers);

        //System.out.println(miLista.size());

        Iterator<String>itS=miListaDeStrings.iterator();
        while(itS.hasNext()){
            String tmp=itS.next();
            System.out.print(tmp + ",");
        }
        Iterator<Integer>itI=miListaDeIntegers.iterator();

        while(itI.hasNext()){
            Integer tmp=itI.next();
            System.out.print(tmp);
            if(itI.hasNext()){
                System.out.print(",");
            }else{
                System.out.print(".\n");
            }

        }

    }
}

Un saludo.

12
Estas son mis respuestas.

Busca información en la documentación oficial de Java sobre la interface Iterable. ¿Qué clases de las que conoces implementan esta interface?

Pues que conozco o haya utilizado, ArrayList. La interface es implementada por muchas otras clases, generalmente clases que implementan colecciones.


¿Qué método han de tener disponible las clases que implementan esta interface?

Unicamente el metodo iterator.


¿Para qué sirve este método?


Este metodo devuelve un objeto de tipo Iterator con una copia de la colección que le hayamos pasado como parametro.

13
Hola, aqui tengo mi solución para este ejercicio.

La clase Circulo:

Código: [Seleccionar]
public class Circulo
{
    private static final double NUMEROPI=3.1416;
    private double radio;

    public Circulo(){
        radio=0;
    }
   
    public void setRadio(double radio){
        this.radio=radio;
    }
    public double getRadio(){   
        return radio;
    }
    public double longitudCirculo(){    //la longitud de una circunferencia es,  Longitud=2*pi*radio
        double longitud=(2*NUMEROPI*radio);
        return longitud;
    }
       
    public double areaCirculo(){      //El área del círculo es igual a pi por el radio al cuadrado..
        double area=((radio*radio)*NUMEROPI);
        return area;
    }
}


Y la clase Main:

Código: [Seleccionar]
import java.util.Scanner;
public class Main
{
    public static void main(String[]args){
        System.out.println("Introduce el radio del circulo a crear: ");
        Scanner sc=new Scanner(System.in);
        double entradaTeclado=sc.nextDouble();
        Circulo circulo=new Circulo();
        circulo.setRadio(entradaTeclado);
        System.out.println("El area del circulo es: " + circulo.areaCirculo() + " cm2");
        System.out.println("La longitud del circulo es: " + circulo.longitudCirculo() + " cm");
    }
}

Ahora tengo un par de preguntas con respecto a la solución que da este programa.
En primer lugar, las medidas devueltas tienen 4 decimales. ¿Como se puede hacer para que salgan dos? He estado buscando información y lo que he encontrado hace referencia a la clase DecimalFormat, pero esta clase lo que hace es limitar la representación grafica pero no modifica el numero, es decir, si el número es 3,4599, utilizando la clase DacimalFormat muestra, 3,45, por ejemplo, si quiero solo dos decimales. Pero lo que yo quiero que salga es 3,46, la cantidad redondeada.
¿como se puede hacer esto?

Y otra, mas que duda, curiosidad, en el texto a imprimir quiero que salga la medida del area seguida de cm cuadrados, ¿como puedo representar el exponente de cm?

Un saludo y muchas gracias. 

14
Hola, aqui esta mi solución a este ejercicio.
Primero la clase entradaTeclado:
Código: [Seleccionar]
import java.util.Scanner;

public class EntradaTeclado
{
    private String entradaTeclado;
   
    //constructor
    public EntradaTeclado(){
        entradaTeclado="";
    }
   
    //metodo de la clase
    public void pedirEntrada(){
        Scanner sc=new Scanner(System.in);
        entradaTeclado=sc.nextLine();
    }
   
    public String getEntrada(){
        return entradaTeclado;
    }
}

Ahora, la clase que he hecho para crear el número aleatorio a adivinar:


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

public class NumeroAleatorio
{
    private Random numAleatorio;
    int numSecreto;
   
    public NumeroAleatorio(){
        numAleatorio=new Random();
        numSecreto=0;
        numSecreto=numAleatorio.nextInt(100)+1;//el metodo nextInt devuelve un numero entre 0 y 99, le sumo 1 para que el numero a adivinar este entre 1 y 100
        System.out.println("Se ha generado un número aleatorio entre 1 y 100, intente adivinarlo");
        System.out.println(numSecreto);// es una prueba para comprobar que funciona bien el codigo
    }
   
    public int getNumeroAleatorio(){
        return numSecreto;
    }
}

Esta clase la he hecho para pasar de la entrada de teclado de tipo String a int:

Código: [Seleccionar]
public class DeStringAInt
{
    private String objetoString;
    private int numIntroducido;
   
    public DeStringAInt(){
        objetoString="";
        numIntroducido=0;
    }
   
    public int pasarAInt(String objetoString){//recibo como parametro la entrada de teclado de tipo String
        Integer aux=0 ;// creo una variable aux Integer
        aux=aux.valueOf(objetoString);//Paso la variable String a Integer
        int numIntroducido=(int)aux;//paso a int el objeto integer
        return numIntroducido;// se devuelve un objeto tipo int
    }
}

Y esta es la clase main:

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

public class AdivinaElNumero
{
    public static void main(String[]args){
        NumeroAleatorio numAleatorio;//declaro objeto tipo NumeroAleatorio
        numAleatorio= new NumeroAleatorio();// creo objeto tipo NumeroAleatorio
        int numSecreto=numAleatorio.getNumeroAleatorio();//el objeto devuelto es de tipo int

        EntradaTeclado sc=new EntradaTeclado();
        sc.pedirEntrada();//la entrada de teclado es un String
       
        DeStringAInt numero=new DeStringAInt();//creo un objeto de tipo DeStringAInt
        int numIntroducido=numero.pasarAInt(sc.getEntrada());//el tipo devuelto por el metodo pasarAInt es un int

        while(numIntroducido!= numSecreto ){
            if (numIntroducido < numSecreto){
                System.out.println("No has acertado, el número secreto es mayor. Prueba otra vez");
                sc.pedirEntrada();
                numIntroducido=numero.pasarAInt(sc.getEntrada());
            }else if(numIntroducido > numSecreto){
                System.out.println("No has acertado, el número secreto es menor. Prueba otra vez");
                sc.pedirEntrada();
                numIntroducido=numero.pasarAInt(sc.getEntrada());
            }
        }
        System.out.println("Enhorabuena!! has acertado");
    }
}

Un saludo y gracias por los consejos.

15
Hola,
esta es mi solución a este ejercicio:
Código: [Seleccionar]
import javax.swing.JOptionPane;
public class ejemploLibro {
    public static void main (String[] Args) {
        String entradaUsuario = JOptionPane.showInputDialog ( "Introduzca un número:" );
        Integer entradaUsuarioInt=0;
        entradaUsuarioInt=entradaUsuarioInt.valueOf(entradaUsuario);//me da un error y me pide inicializar la variable entradaUsuarioInt
        System.out.println ("El doble del número introducido es: " + 2*entradaUsuarioInt);
    }
}

Y una pregunta, porque no me queda clara una cosa.
Cuando estaba escribiendo el codigo, intente hacerlo primero con el tipo int y me devolvio un error el metodo valueOf. Al hacerlo con el tipo Integer, me desaparecio el error.
¿es porque no se puede transformar de un String a un int? ya que el metodo valueOf siempre devuelve un String, ¿verdad?
Un saludo.

16
Hola,
Aqui esta mi solución a este ejercicio:
Código: [Seleccionar]
import java.util.Scanner;

public class ClaseMain
{
    public static void main(String[]arg){
        String[]mes={"emero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"};
        String mesSecreto=mes[3]; // el mes secreto es abril...no marzo.
        System.out.print("Adivine el mes secreto. Introduzca el nombre del mes en minusculas: ");
        Scanner sc=new Scanner(System.in);
        String entradaTeclado=sc.nextLine();

        while (!entradaTeclado.equals(mesSecreto)){
            System.out.print("No ha acertado. Intente adivinarlo introduciendo otro mes: ");
            entradaTeclado=sc.nextLine();
        }
        System.out.println("¡Ha acertado!");
    }
}

Un saludo.

17
Estas son mis respuestas:

¿Se puede acceder a un objeto anónimo contenido en un ArrayList?

Creo que si, ya que a un ArrayList se accede por el indice que posee.

¿Se puede inicializar un objeto de una clase que contiene tres atributos de tipo objeto declarando en el constructor que los atributos se inicializan mediante objetos anónimos?

Creo que no, ya que al declarar los atributos, ya les estamos asignando un nombre, con lo que dejan de ser anonimos.

Un saludo.

18
Pues aqui esta mi solución para este ejercicio.
Como siempre, agradezco sujerencias para mejorar el codigo.

Clase ListaCantantesFamosos:
Código: [Seleccionar]
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;

public class ListaCantantesFamosos
{
    private ArrayList<CantanteFamoso>listaCantantesFamosos; //declaramos un ArrayList que contiene objetos tipo cantanteFamoso
    private String nombre;//establecemos o declaramos un atributo nombre de la lista

    public ListaCantantesFamosos(String valor_nombre){
        nombre=valor_nombre;
        listaCantantesFamosos=new ArrayList<CantanteFamoso>();//creamos un objeto ArrayList, listaCantantesFamosos, que contiene objetos tipo cantanteFamoso
    }

    public void addCantante(CantanteFamoso valor_nombre){
        listaCantantesFamosos.add(valor_nombre);
    }
   
    public void listar(){
        Iterator<CantanteFamoso>it=listaCantantesFamosos.iterator();//creamos la copia creando un objeto iterator
        CantanteFamoso tmpCantanteFamoso=new CantanteFamoso("","");//creamos el objeto CantanteFamoso temporal para guardar el que saquemos de la lista
        while(it.hasNext()){//devuelve true si el objeto no es el  ultimo de la collección
            tmpCantanteFamoso=it.next();//sacamos de la lista un objeto CantanteFamoso, el metodo next() ha avanzado ya al siguiente elemento...
            System.out.println("Cantante: "+ tmpCantanteFamoso.getCantante());
            System.out.println("Disco mas vendido: "+ tmpCantanteFamoso.getDisco());
        }
    }
    public void introducirNuevoCantante(){
        System.out.println("Por favor, introduzca otro cantante: \nNombre:");
        Scanner sc=new Scanner(System.in);
        String entradaNombre=sc.nextLine();
        System.out.println("Disco:");
        String entradaDisco=sc.nextLine();
        CantanteFamoso newCantante3=new CantanteFamoso(entradaNombre,entradaDisco);
        listaCantantesFamosos.add(newCantante3);
        System.out.println("La lista actualizada contiene los siguientes nombres");
        listar();
    }
   
       
}
clase CantanteFamoso:
Código: [Seleccionar]
public class CantanteFamoso
{
    private String nombre;
    private String discoConMasVentas;

    public CantanteFamoso(String valor_nombre, String valor_disco){
        nombre=valor_nombre;
        discoConMasVentas=valor_disco;
    }

    public void setCantante(String valor_nombre){
        nombre=valor_nombre;
    }

    public String getCantante(){
        return nombre;
    }

    public void setDisco(String valor_disco){
        discoConMasVentas=valor_disco;
    }

    public String getDisco(){
        return discoConMasVentas;
    }

}
y clase TextListaCantantesFamosos:
Código: [Seleccionar]
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;

public class TextListaCantantesFamosos
{
    public static void main(String[]arg){
        ListaCantantesFamosos lista=new ListaCantantesFamosos("lista");//creamos un objeto ArrayList
        CantanteFamoso newCantante1=new CantanteFamoso("Madonna","no se");//creamos un objeto tipo CantanteFamoso
        CantanteFamoso newCantante2=new CantanteFamoso("BonJovi","puede ser..");//creamos un objeto tipo CantanteFamoso
        lista.addCantante(newCantante1);
        lista.addCantante(newCantante2);


        System.out.println("La lista inicial contiene los siguientes nombres");
        lista.listar();

        lista.introducirNuevoCantante();

        boolean aux=true;
        while(aux==true){

            System.out.println("¿Desea introducir otro cantante (S/N)?");
            Scanner sc=new Scanner(System.in);
            String decision=sc.nextLine();
            if(decision.equalsIgnoreCase("S")){
                lista.introducirNuevoCantante();
                aux=true;
            }else{
                aux=false;
            }

        }
    }
}
Un saludo.

19
Hola,

Tengo un problema con este ejercicio. Me sale el error 'cannot find symbol- class ArrayList' en la clase ListaCantantesFamosos:

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

public class ListaCantantesFamosos
{
    private ArrayList<CantanteFamoso>listaCantantesFamosos; //declaramos un ArrayList que contiene objetos tipo cantanteFamoso
    private String nombre;//establecemos o declaramos un atributo nombre de la lista

    public ListaCantantesFamosos(String valor_nombre){
        nombre=valor_nombre;
        listaCantantesFamosos=new Arraylist<CantanteFamoso>();//creamos un objeto ArrayList, listaCantantesFamosos, que contiene objetos tipo cantanteFamoso
    }

    public void addCantante(CantanteFamoso valor_nombre){
        listaCantantesFamosos.add(valor_nombre);
    }
}

La clase CantanteFamoso es :
Código: [Seleccionar]
public class CantanteFamoso
{
    private String nombre;
    private String discoConMasVentas;
   
    public CantanteFamoso(String valor_nombre, String valor_disco){
        nombre=valor_nombre;
        discoConMasVentas=valor_disco;
    }
}

No consigo ver porque me sale el error.

Si me podeis ayudar.

Muchas gracias.

20
Hola.
Aqui mando los codigos de este ejercicio. La verdad es que lo veo muy repetitivo en la clase del main y ademas, me ha costado mucho ver como implementar la elección con un while....se hace, pero no me gusta como ha quedado. Pero no se me ocurre otra forma de hacerlo. Me vendrian bien algunas sujerencias.
Un saludo.

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

public class ListaCantantesFamosos
{
    private String nombreLista;//establecemos un atributo nobre de la lista
    private ArrayList<String> listaCantantes;//declaramos un ArrayList que contiene objetos Strnig
   
    public ListaCantantesFamosos(String nombre){
        nombreLista=nombre;
        listaCantantes=new ArrayList<String>();//creamos el objeto de tipo ArrayList
       
        listaCantantes.add("Madonna");
        listaCantantes.add("Queen");
        listaCantantes.add("Bruce Springsteen");
       
    }
   
    public void addNombre(String nombre){
        listaCantantes.add(nombre);
    }
    public String getNombre(int posicion){//metodo para obtener un nombre de la lista, segun su indicie
        if(posicion>=0 && posicion<listaCantantes.size()){
            return listaCantantes.get(posicion);
        }else{
            return "No existe nombre para la posición solicitada";
        }
    }
   
    public void listarNombres(){
        for (String nombre:listaCantantes){
            System.out.println(nombre);
        }
    }
   
}

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

public class testListaCantantes
{
    public static void main(String[]args){
        ListaCantantesFamosos lista=new ListaCantantesFamosos("Lista cantantes");
        lista.addNombre("Bon Jovi");//añado un mobre mas a la lista...probando...

        System.out.println("La lista esta formada por estos nombres:");
        lista.listarNombres();

        System.out.println("Introducir un nuevo nombre a la lista");
        Scanner sc=new Scanner(System.in);
        String newNombre=sc.nextLine();
        lista.addNombre(newNombre);
        System.out.println("La lista esta formada por estos nombres:");
        lista.listarNombres();

        boolean aux=true;
        while(aux==true){
            System.out.println("¿Quieres introducir más nombres? S/N");
            String eleccion=sc.nextLine();

            if(eleccion.equalsIgnoreCase("S")){//equalsIgnoreCase es el metodo para comparar sin tener en cuenta si es mayusculas o minusculas
                System.out.println("Introducir un nuevo nombre a la lista");
                String newN=sc.nextLine();
                lista.addNombre(newN);

                System.out.println("La lista esta formada por estos nombres:");
                lista.listarNombres();
                aux=true;
            }else{
                aux=false;//siempre que la respuesta no sea S, se saldra del programa.
            }

        }

    }
}


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".