Ayuda con un codigo de java?

Iniciado por omar199609, 6 Junio 2015, 22:29 PM

0 Miembros y 1 Visitante están viendo este tema.

omar199609

Miren es para una tarea y no se mucho de java.

Quiero hacer que el programa pida la cantidad de cd que se quieren almacenar, tengo el siguiente codigo.

Tengo la siguiente clase:
Código (java) [Seleccionar]
package actividad6;

/**
*
* @author Omar
*/
public class CD {
 private String nombre;
 private String cantante;
 private String genero;
 private double costo;

 public CD (){
     String n;
     String c;
     String g;
     double p;
     
     
 }
 public CD (String n, String c, String g, double p){
     nombre = n;
     cantante = c;
     genero = g;
     costo = p;    
 }
 public void setNombre (String n){
     nombre = n;
     
 }
 public void setCantante(String c){
         cantante = c;
 }
 public void setGenero(String g){
genero = g;
 }
 public void setCosto(double p){
 costo = p;
 }
 public String getNombre(){
     return nombre;
 }
  public String getCantante(){
     return cantante;
 }
   public String getGenero(){
     return genero;
 }
    public double getCosto(){
     return costo;
 }
    public void despliega(){
   System.out.println ("Nombre de la Cancio: " +getNombre());
   System.out.println("Nombre del Autor: " +cantante);
   System.out.println("Tipo de Genero: " +genero);
   System.out.println("Tiene un costo de: " +costo);
}
}[/spoiler]

Este es mi main:
[spoiler]package actividad6;

import java.io.*;
public class Actividad6 {
 

  public static BufferedReader entrada
           = new BufferedReader(new InputStreamReader(System.in));
    public static void main(String[] args)throws IOException {
     
      System.out.println("Escribe el nombre de la cancion:");
      String n = entrada.readLine();
      System.out.println("Escribe el autor de la cancion:");
      String a = entrada.readLine();
      System.out.println("Escribe el tipo de genero:");
      String g = entrada.readLine();
      System.out.println("Escribe el precio:");
      double p = Double.parseDouble(entrada.readLine());
      CD cd = new CD(n,a,g,p);
     cd.despliega();
   
   }
   
}


Alguien me puede ayudar? por ejemplo cuantos cd quieres agregar 10, entonces saldran 10 veces los datos y alfinal mostrar resultados

Mod: lo primero de saber sobre java, es que el lenguaje de programación es java, no c++, el titulo debe ser descriptivo al problema, los códigos deben ir en etiquetas GeSHi,. Tema movido y corregido

edr89

#1
No entiendo muy bien pero no basta con un ciclo for?, le preguntas al usuario cuantos CD quiere y ese dato sera la condicion del ciclo, al final tambien lo imprimes con for.  o no? :huh:

Estoy practicando con algo que me parece similar, por qué no creas un arreglo de objetos CD y entonces vas solicitando los datos que necesites:

Código (java) [Seleccionar]
CD[i].setNombre(scanStr.nextLine());

al final lo imprimes con un ciclo o con toString(), no se son ideas...

saludos.

Usuario Invitado

Código (java) [Seleccionar]
public class Disk {
    private String name;
    private String author;
    private Date pubDate;
    private String genre;
    private float price;
    private List<Song> songs;

    public Disk() {}
    public Disk(String name, String author, Date pubDate, String genre,
float price, List<Song> songs) {
this.name = name;
this.author = author;
this.pubDate = pubDate;
this.genre = genre;
this.price = price;
this.songs = songs;
    }

    // getters y setters

    @Override
    public String toString() {
        String data = "Nombre: " + name +
    "\nAutor: " + author +
    "\nF. Publicación: " + pubDate +
    "\nGénero: " + genre +
    "\nPrecio: " + price + "\n";
String songsData = "Canciones: \n";
        for(Song song : songs) {
    songsData +=
"Nombre: " + song.getName() +
"Duración: " + song.getDuration() +
"Artistas extras: " + song.getExtrasArt() +
"Año: " + song.getYear();
}
data += songsData;
return data;
    }
}


Código (java) [Seleccionar]
public class Song {
    private String name;
    private String duration;
    private String year;
    private String extrasArt = "Ninguno";

    public Song() {}
    public Song(String name, String duration, String year,
String extrasArt) {
this.name = name;
this.duration = duration;
this.year = year;
this.extrasArt = extrasArt;
    }
    // getters y setters
}


Código (java) [Seleccionar]
public class DiskManager {
    private final static Scanner READER;
    static { READER = new Scanner(System.in); }

    public static Disk newDisk(List<Song> songs) {
System.out.println("Escribe los datos del disco en el siguiente orden:\n");
System.out.println("1. Nombre\n2.Autor\n3.F. publicación\n4.Género\n5.Precio");

String discName;
String author;
Date pubDate;
String genre;
float price;

discName = READER.nextLine();
author = READER.nextLine();
pubDate = new SimpleDateFormat("dd-MM-yyyy").parse(READER.next());
genre = READER.nextLine();
price = READER.nextFloat();

return new Disk(discName, author, pubDate, genre, price, songs);
    }
    public static List<Song> newSongs() {
List<Song> songs = new ArrayList<>();

System.out.println("¿Cuántas canciones desea añadir?");
Byte songsQuantity = READER.nextByte();

for(byte i=0; i<songsQuantity; i++) {
    System.out.println("Ingrese los datos en el siguiente orden:\n");
    System.out.println("1. Nombre\n2. Duración\n3. Año\n4. Artistas extras");
   
    String songName;
    String duration;
    String year;
    String extrasArt;

    songName = READER.nextLine();
    duration = READER.next();
    year = READER.next();
    extrasArt = READER.nextLine();

    songs.add(new Song(songName, duration, year, extrasArt));
}
return songs;
}

   
Código (java) [Seleccionar]
public static void main(String[] args) {
    List<Disk> disks = new ArrayList<>();

    /* Registrar discos */
    System.out.println("¿Cuántos discos desea registrar?");
    byte discQuantity = reader.nextByte();

    /* Registra info del disco */
    for(byte i=0; i<discQuantity; i++) {
List<Song> songs = DiskManager.newSongs();
        Disk disk = DiskManager.newDisk(songs);
disks.add(disk);
    }

    /* Mostrar información del CD */
    for(Disk disk : disks) {
System.out.println("[+] Información del disco:\n\n");
System.out.println(disk);
    }
}


El método toString() es heredado de Object, lo que quiere decir que todo objeto hereda el método toString(). Éste método es llamado automáticamente cuando se detecta que un objeto está queriendo ser imprimido por el flujo de salida estándar de la clase System, así, se llama automáticamente al método toString() devolviendo éste lo que se ha programado.

La anotación @Override, significa que estás sobreescribiendo ese método. Es decir, al método ya existente que ha heredado, le añade funcionalidad. Esto quiere decir, que está sobreescrito, personalizado.

Puedes simular una BBDD también haciendo uso de NavigableMap. No lo hice para que no te confundas. Cualquier duda, la expones.


Saludos.

PD: Es muy probable que el código tenga errores porque lo he hecho rápido en un editor sencillo.
"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein