Ciao a tutti, sono alle prime armi con java e già alle prese con un problema che in realtà dovrebbe essere abbastanza semplice, cioè l'interazione con l'utente e in particolare la lettura di stringhe da console. Per fare ciò ho letto che si può usare la classe Scanner. Io ho provato a fare così: (in realtà mancano le classi Cd_musicale, Cd_software e Song ma contengono solo i costruttori)
import java.util.*;
public class Cd {
String titolo;
int anno_pubb;
static Cd_musicale[] coll_mus = new Cd_musicale[100];
static Cd_software[] coll_softw = new Cd_software[100];
static int num_mus=0, num_softw=0;
public Cd() {
}
public static void search(String title) {
boolean trovato=false;
System.out.println("Ricerca di \"" + title + "\" tra i " + num_mus + " CD.");
for(int i=0; i<num_mus; i++) {
if(coll_mus[i].titolo.compareToIgnoreCase(title) == 0) {
trovato=true;
// variabili di appoggio
String titolo_trov = coll_mus[i].titolo;
int anno_trov = coll_mus[i].anno_pubb;
//stampo i risultati
System.out.println("L'anno di pubblicazione del CD \"" + titolo_trov + "\" è " + anno_trov);
}
}
System.out.println(trovato ? "Ricerca completata con successo." : "CD non trovato.");
}
public static void insertMusic() {
Scanner scan = new Scanner(System.in);
System.out.print("Inserire il titolo: ");
String titolo_new = scan.nextLine();
System.out.print("Inserire l'autore: ");
String autore_new = scan.nextLine();
System.out.print("Inserire la casa discografica: ");
String casa_new = scan.nextLine();
System.out.print("Inserire l'anno di pubblicazione: ");
int anno_new = scan.nextInt();
Cd_musicale disc_new = new Cd_musicale(titolo_new, autore_new, casa_new, anno_new);
coll_mus[num_mus]=disc_new;
num_mus++;
System.out.println("Nuovo CD inserito con successo. Ora ci sono " + num_mus + " CD nella collezione.");
}
public static void main(String[] args) {
num_mus=0;
num_softw=0;
Scanner sc = new Scanner(System.in);
Song disc1_track1 = new Song("Hells Bells", 5, 13);
Song disc1_track2 = new Song("Shoot to Thrill", 5, 18);
Song disc1_track3 = new Song("What Do You Do for Money Honey?", 3, 36);
Cd_musicale disc1 = new Cd_musicale("Back in Black", "ACDC", "Atco Records", 1980, disc1_track1, disc1_track2, disc1_track3);
coll_mus[num_mus]=disc1;
num_mus++;
Cd_musicale disc2 = new Cd_musicale("Dire Straits", "Dire Straits", "Vertigo Records", 1978);
coll_mus[num_mus]=disc2;
num_mus++;
Cd_software disc3 = new Cd_software("Windows 7 Home Premium 32 bit", "Microsoft", "Sistema operativo", 2009, "Windows");
coll_softw[num_softw]=disc3;
num_softw++;
do {
System.out.print("Inserire un nuovo CD musicale (1) o effettuare una ricerca per titolo (2)? ");
int risp = sc.nextInt();
switch (risp) {
case 1:
insertMusic();
break;
case 2:
System.out.print("Inserire il titolo da cercare: ");
String inserimento = sc.nextLine();
search(inserimento);
break;
case 0:
System.out.println("Ciao ciao!");
System.exit(0);
break;
}
} while (1 != 0);
}
}
ma non funziona e dà errore (per la verità di diversi tipi, anche perchè ho fatto parecchi tentativi ...)
Qualcuno può dirmi dove ho sbagliato con i vari scanner??
Grazie!!