[ Foro de Java ]

Problema con aplicacion de biblioteca java

15-Nov-2019 13:08
Invitado (rafael cascos)
1 Respuestas

Buenas tengo que entregar este ejercicio en unos días y no se como terminarlo si me pudierais ayudar lo agradecería:

Esto es lo que pide el ejercicio:


Se desea guardar información sobre los libros que tenéis en casa
la siguiente información: Titulo,Autor,Editorial,Fecha de compra mas reciente, Precio
Crear una clase que permita almacenar la información y realizar un programa que a través de un menú permita:

-Introducir datos de los Libros
-Visualizar los datos almacenados
-Mostrar los datos del libro comprado mas recientemente.
-Mostrar el precio medio de los libros almacenados

y este es mi código actual pero no se donde falla ya que no se muestra al pedir los datos:


public class MiBiblioteca {

/**
* @param args the command line arguments
*/public static void main(String[] args) {
float media;


Libro libro1= new Libro();
Libro libro2= new Libro();
Libro libro3= new Libro();
Libro libro4= new Libro();
Libro libro5= new Libro();
Scanner leer= new Scanner (System.in);
byte opc;





do
{ limpiarConsola();
mostrarMenu();
opc=leer.nextByte();

switch (opc)

{
case 1:
escogerdatos(libro1,libro2,libro3,libro4,libro5);
break;

case 2:
mostrardatos(libro1,libro2,libro3,libro4,libro5);
break;

case 3:
libroreciente(libro1,libro2,libro3,libro4,libro5);
break;

case 4:

media=mediaprecio(libro1,libro2,libro3,libro4,libro5);
System.out.println("El precio medio de los libros es: "+media);
break;


case 0:
break;

default:
System.out.println("vuelva a introducir otro numero");

}

}while(opc!=0);

}
public static void mostrarMenu()
{
System.out.println("------------- MENU ---------------------------------");
System.out.println("1.Introducir datos de los libros.-------------------");
System.out.println("2.Visualizar los datos almacenados.-----------------");
System.out.println("3.Mostrar los datos del libro comprado mas reciente.");
System.out.println("4.Mostrar el precio medio de los libros.------------");
System.out.println("0. Salir--------------------------------------------");

System.out.print("Elija una opcion: ------------------------------------");
}


private static void escogerdatos(Libro libro1, Libro libro2, Libro libro3, Libro libro4, Libro libro5) {
Scanner leer= new Scanner (System.in);
byte opc;
System.out.println("Introduzca el primer dato o el segundo");
opc=leer.nextByte();

switch (opc)
{
case 1:
introducirdatos();
break;
case 2:
datosDefecto(libro1, libro2, libro3, libro4, libro5);
break;
default:
break;

}


}


static void datosDefecto(Libro libro1, Libro libro2, Libro libro3, Libro libro4, Libro libro5)

{

libro1 = new Libro ("El se?or de los anillos","J.R tolkien","Phoenix",25,01,1995,(float)35.5);
libro2= new Libro("Harry potter 2","lol","Solemne",17,7,2018,(float)14.7);
libro3= new Libro("Cincuenta sombras de grey","Gabriel García Márquez","Biblioteca Kett",3,12,2018,(float)16.5);
libro4= new Libro("Crepusculo","Friedrich Nietzsche","Cascabel",13,6,2017,(float)15.75);
libro5= new Libro("lol","Gustavo Gómez","La Nueva",24,1,2016,(float)20.8);
System.out.println("Datos introducidos");

}


public static Libro introducirdatos()
{
Scanner leer= new Scanner (System.in);
String titulo, autor, editorial;
int dia, mes, anio;
float precio;

System.out.print("\nTitulo: ");
titulo=leer.nextLine();
System.out.print("\nAutor: ");
autor=leer.nextLine();
System.out.print("\nEditorial: ");
editorial=leer.nextLine();
System.out.print("\nFecha de compra (día/mes/anio): ");
System.out.print("\nDía: ");
dia=leer.nextInt();
System.out.print("\nMes: ");
mes=leer.nextInt();
System.out.print("\nAnio: ");
anio=leer.nextInt();
System.out.print("\nPrecio: ");
precio=leer.nextFloat();

return new Libro(titulo,autor,editorial,dia,mes,anio,precio);
}

static void mostrardatos(Libro libro1, Libro libro2, Libro libro3, Libro libro4, Libro libro5)
{

libro1.visualizardatos();
libro2.visualizardatos();
libro3.visualizardatos();
libro4.visualizardatos();
libro5.visualizardatos();

}


static void limpiarConsola()
{
for (byte i=0;i<10;i++)
{
System.out.println(" ");
}
}



static float mediaprecio(Libro libro1, Libro libro2, Libro libro3, Libro libro4, Libro libro5)
{
float media=(libro1.precio+
libro2.precio+
libro3.precio+
libro4.precio+
libro5.precio)/5;
return media;
}


static String libroreciente(Libro libro1, Libro libro2, Libro libro3, Libro libro4, Libro libro5)
{

if ((libro1.fechaCompra).after(libro2.fechaCompra))
{
if ((libro1.fechaCompra).after(libro3.fechaCompra))
{
if ((libro1.fechaCompra).after(libro4.fechaCompra))
{
if ((libro1.fechaCompra).after(libro5.fechaCompra))
{
return libro1.visualizardatos();
}
}
}
}
else if ((libro2.fechaCompra).after(libro1.fechaCompra))
{
if ((libro2.fechaCompra).after(libro3.fechaCompra))
{
if ((libro2.fechaCompra).after(libro4.fechaCompra))
{
if ((libro2.fechaCompra).after(libro5.fechaCompra))
{
return libro2.visualizardatos();
}
}
}
}
else if ((libro3.fechaCompra).after(libro1.fechaCompra))
{
if ((libro3.fechaCompra).after(libro2.fechaCompra))
{
if ((libro3.fechaCompra).after(libro4.fechaCompra))
{
if ((libro3.fechaCompra).after(libro5.fechaCompra))
{
return libro3.visualizardatos();
}
}
}
}
else if ((libro4.fechaCompra).after(libro1.fechaCompra))
{
if ((libro4.fechaCompra).after(libro2.fechaCompra))
{
if ((libro4.fechaCompra).after(libro3.fechaCompra))
{
if ((libro4.fechaCompra).after(libro5.fechaCompra))
{
return libro4.visualizardatos();
}
}
}
}
else if ((libro5.fechaCompra).after(libro1.fechaCompra))
{
if ((libro5.fechaCompra).after(libro2.fechaCompra))
{
if ((libro5.fechaCompra).after(libro3.fechaCompra))
{
if ((libro5.fechaCompra).after(libro4.fechaCompra))
{
return libro5.visualizardatos();
}
}
}
}


return"";
}

}


class Libro{

SimpleDateFormat formato= new SimpleDateFormat("dd-MM-yyyy");
Scanner leer=new Scanner (System.in);
String titulo,autor,editorial;
Date fechaCompra= new Date();
float precio;
int dia, mes, anio;

void set_titulo(String titulo)
{
this.titulo=titulo;
}

Libro(String titulo, String autor, String editorial, int dia, int mes, int anio, float precio)
{
this.titulo=titulo;
this.autor=autor;
this.editorial=editorial;
fechaCompra=new Date(anio-1900,mes-1,dia);
this.precio=precio;
}

Libro()
{


}

public String visualizardatos()

{
return "Ti?tulo: "+titulo + "Autor: " +autor + "Editorial: " +editorial+ "Fecha de compra: "+formato.format(fechaCompra)+ "Precio: "+(precio);
}

public void leerDatos()
{
System.out.print("Titulo: ");
titulo=leer.nextLine();
System.out.print("Autor: ");
autor=leer.nextLine();
System.out.print("Editorial: ");
editorial=leer.nextLine();
System.out.print("Fecha de compra): ");
System.out.print("Dia: ");
dia=leer.nextInt();
System.out.print("Mes: ");
mes=leer.nextInt();
System.out.print("Anio: ");
anio=leer.nextInt();
System.out.print("Precio: ");
precio=leer.nextFloat();


}

}


 


17-Nov-2019 02:10
Nacho Cabanes (+83)

No es recomendable mezclar "nextInt" y similares con "nextLine", si no tienes muy claro los problemas que puede provocar.

Como solución sencilla, lee todo con nextLine y convirtiendo después a entero o al tipo de datos que corresponda.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)