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:
package actividad6;
/**
*
* @author Omar
*/
public class CD {
private double costo;
public CD (){
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;
}
return nombre;
}
return cantante;
}
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 {
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
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:
CD[i].setNombre(scanStr.nextLine());
al final lo imprimes con un ciclo o con toString(), no se son ideas...
saludos.
public class Disk {
private float price;
private List<Song> songs;
public Disk() {}
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
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;
}
}
public class Song {
private String extrasArt
= "Ninguno";
public Song() {}
this.name = name;
this.duration = duration;
this.year = year;
this.extrasArt = extrasArt;
}
// getters y setters
}
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");
float price;
discName = READER.nextLine();
author = READER.nextLine();
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");
songName = READER.nextLine();
duration = READER.next();
year = READER.next();
extrasArt = READER.nextLine();
songs.add(new Song(songName, duration, year, extrasArt));
}
return songs;
}
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"); }
}
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.