catalogo libri JAVA

  • Creatore Discussione Creatore Discussione AnD@rè
  • Data di inizio Data di inizio

AnD@rè

Nuovo Utente
8 Feb 2011
5
0
0
salve sono un neo programmatore ...ho realizzato un programma per gestire un catalogo libri...

ho inserito dei libri preimpostati..cosi se l'utente vuole utilizzare uno di questi libri deve solo inserire l'indice del libro....ma quando inserisco un indice mi stampa nulll...perchè dove ho sbagliato?


public void preimpostati()
{
PrintStream fg = System.out;
Scanner on = new Scanner(System.in);
System.out.println(" EMMARO: (0) ");
System.out.println(" NAZIM HIKMET: (1) ");
System.out.println(" UMBERTO SABA: (2) ");

System.out.println("Inserire la posizione del libro da utilizzare: " );
n = on.nextInt();
/**vorrei che mi stampasse a video l'indice dell'array inserito dall'utente
* ma mi stampa sempre l'ultimo array,,, con il for o if non cambia nulla è lo stesso..
* come possiamo fare?..ho dichiarato una nuova n ma non cambia niente anzi mi dà un errore di sconfinamento pure...
*/
ay = new Book[3];
if( n == 0)
fg.print(ay[0]);
n = on.nextInt();
if(n == 1)
fg.print(ay[1]);
n=on.nextInt();
if(n == 2)
fg.print(ay[2]);
n=on.nextInt();
/** for(int i=0; i<n-1; i++)
System.out.println(ay);
*/


cognome = "Emmaro";
titolo = "IL PAESAGGIO";
genere = "COMICO";
pubblicazione = new Date(10, 3, 1889);
prezzo = 34.5;
ay[0] = new Book(cognome, titolo, genere, pubblicazione, prezzo);



cognome = "Uberto Saba « Parlavo vivo a un popolo di morti» Morto alloro rifiuto e chiedo oblio »";
titolo = "La serena disperazione ";
genere = "Poesia - Trieste";
pubblicazione = new Date(12, 5, 1969);
prezzo = 39;
ay[1] = new Book(cognome, titolo, genere, pubblicazione, prezzo);


cognome = "Nazim Hikmet";
titolo = "ANCHE TU SEI COME TUTTI";
genere = "AMORE LUOGO - ISTANBUL";
pubblicazione = new Date(20, 5, 1920);
prezzo = 38;
ay[2] = new Book(cognome, titolo, genere, pubblicazione, prezzo);


}
 
Ciao, devi spostare solo l'inizializzazione dell'array di libri prima della stampa del contenuto.

ciao
 
Ringrazio per la tu risposta....
intendevi qualcosa del genere?


@SuppressWarnings("deprecation")
public void preimpostati()
{
PrintStream fg = System.out;
Scanner on = new Scanner(System.in);
System.out.println(" EMMARO: (0) ");
System.out.println(" NAZIM HIKMET: (1) ");
System.out.println(" UMBERTO SABA: (2) ");

System.out.println("Inserire la posizione del libro da utilizzare: " );
n = on.nextInt();

/**vorrei che mi stampasse a video l'indice dell'array inserito dall'utente
* ma mi stampa sempre l'ultimo array,,, con il for o if non cambia nulla è lo stesso..
* come possiamo fare?..ho dichiarato una nuova n ma non cambia niente anzi mi dà un errore di sconfinamento pure...
if(n == 0)
fg.print(ay[0]);
n = on.nextInt();
if(n == 1)
fg.print(ay[1]);
n=on.nextInt();
if(n == 2)
fg.print(ay[2]);
n=on.nextInt();
*/

ay = new Book[4];
for(int i=0; i<ay.length-1; i++)

System.out.println(ay);




ay[0] = new Book(cognome, titolo, genere, pubblicazione, prezzo);
cognome = "Emmaro";
titolo = "IL PAESAGGIO";
genere = "COMICO";
pubblicazione = new Date(10, 3, 1889);
prezzo = 34.5;



ay[1] = new Book(cognome, titolo, genere, pubblicazione, prezzo);
cognome = "Uberto Saba « Parlavo vivo a un popolo di morti» Morto alloro rifiuto e chiedo oblio »";
titolo = "La serena disperazione ";
genere = "Poesia - Trieste";
pubblicazione = new Date(12, 5, 1969);
prezzo = 39;


ay[2] = new Book(cognome, titolo, genere, pubblicazione, prezzo);
cognome = "Nazim Hikmet";
titolo = "ANCHE TU SEI COME TUTTI";
genere = "POESIA LUOGO - ISTANBUL";
pubblicazione = new Date(20, 5, 1920);
prezzo = 38;



}
 
Devi prima "riempire" l'array prima di leggerne il contenuto:

Codice:
	 @SuppressWarnings("deprecation")
	public void preimpostati()
	 { 
          Book[] ay = new Book[3];
	  ay[0]  = new Book(cognome, titolo, genere, pubblicazione, prezzo);
		  cognome = "Emmaro";
		  titolo  = "IL PAESAGGIO";
		  genere  = "COMICO";
		  pubblicazione = new Date(10, 3, 1889);
		  prezzo  = 34.5;
		  
		 
			 
		  ay[1] = new Book(cognome, titolo, genere, pubblicazione, prezzo);
		  cognome = "Uberto Saba  « Parlavo vivo a un popolo di morti» Morto alloro rifiuto e chiedo oblio »";
		  titolo  = "La serena disperazione ";
		  genere  = "Poesia - Trieste";
		  pubblicazione = new Date(12, 5, 1969);
		  prezzo  = 39;
		  
		  
		  ay[2]   = new Book(cognome, titolo, genere, pubblicazione, prezzo);
	      cognome = "Nazim Hikmet";
	      titolo  = "ANCHE TU SEI COME TUTTI";
	      genere  = "POESIA LUOGO - ISTANBUL";
		  pubblicazione = new Date(20, 5, 1920);
		  prezzo  =  38;
		   PrintStream fg = System.out;


		   Scanner on = new Scanner(System.in);
			 System.out.println(" EMMARO:         (0) ");
			 System.out.println(" NAZIM HIKMET:   (1) ");
			 System.out.println(" UMBERTO SABA:   (2) ");
			
		     System.out.println("Inserire la posizione del libro da utilizzare: " );
			 n = on.nextInt();  


			 
		     /**vorrei che mi stampasse a video l'indice dell'array inserito dall'utente
		       * ma mi stampa sempre l'ultimo array,,, con il for o if non cambia nulla è lo stesso..
		      * come possiamo fare?..ho dichiarato una nuova n ma non cambia niente anzi mi dà un errore di sconfinamento pure... 	
			 if(n == 0)
		        fg.print(ay[0]);
			    n = on.nextInt();
			 if(n == 1)
				fg.print(ay[1]);
			    n=on.nextInt();
			 if(n == 2)
				fg.print(ay[2]);
			  n=on.nextInt();
				*/ 
			 
			 ay = new Book[4];
			 for(int i=0; i<ay.length-1; i++)
				 
				 System.out.println(ay[i]);
				 
		
		     	 
				
	
			 
			 
		
	}
 
NO non va bene...mi stampa ancora NULL
EMMARO: (0)
NAZIM HIKMET: (1)
UMBERTO SABA: (2)
Inserire la posizione del libro da utilizzare:
0
null
null
null
 
Continui ad inizializzare male variabili, prima si inizializza e poi si usa:

Codice:
	Book[] ay = new Book[3];
		String cognome;
		String titolo;
		String genere;
		Date pubblicazione;
		double prezzo;

		cognome = "Emmaro";
		titolo = "IL PAESAGGIO";
		genere = "COMICO";
		pubblicazione = new Date(10, 3, 1889);
		prezzo = 34.5;
		ay[0] = new Book(cognome, titolo, genere, pubblicazione, prezzo);

		cognome = "Uberto Saba  « Parlavo vivo a un popolo di morti» Morto alloro rifiuto e chiedo oblio »";
		titolo = "La serena disperazione ";
		genere = "Poesia - Trieste";
		pubblicazione = new Date(12, 5, 1969);
		prezzo = 39;
		ay[1] = new Book(cognome, titolo, genere, pubblicazione, prezzo);

		cognome = "Nazim Hikmet";
		titolo = "ANCHE TU SEI COME TUTTI";
		genere = "POESIA LUOGO - ISTANBUL";
		pubblicazione = new Date(20, 5, 1920);
		prezzo = 38;
		PrintStream fg = System.out;
		ay[2] = new Book(cognome, titolo, genere, pubblicazione, prezzo);

		Scanner on = new Scanner(System.in);
		System.out.println(" EMMARO:         (0) ");
		System.out.println(" NAZIM HIKMET:   (1) ");
		System.out.println(" UMBERTO SABA:   (2) ");

		System.out.println("Inserire la posizione del libro da utilizzare: ");
		int n = on.nextInt();

		fg.print(ay[n]);
}
 

Discussioni simili