Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Array di oggetti

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    8

    Array di oggetti

    Buonasera. Da qualche giorno ho iniziato a studiare Java, a breve inizia un corso di formazione e vorrei portarmi avanti con lo studio.

    Sto provando a creare un piccolo programmino che mi permetta di inserire titolo, autore e prezzo di tot libri.

    Di conseguenza ho creato una classe ed il main che incollo qui di seguito:

    codice:
    
    
    public class Libro {
    
    
    	private String nome ="ciao";
    	private String autore ="bhu";
    	private int costo =1;
    	
    	
    	
       //costruttore
    	
    public Libro (String nome, String autore, int costo)
    {
    	this.setNome(nome);
    	this.setAutore(autore);
    	this.setCosto(costo);
    	
    	
    }
    
    
    
    
    
    
    public String getNome() {
    	return nome;
    }
    
    
    
    
    
    
    public void setNome(String nome) {
    	this.nome = nome;
    }
    
    
    
    
    
    
    public String getAutore() {
    	return autore;
    }
    
    
    
    
    
    
    public void setAutore(String autore) {
    	this.autore = autore;
    }
    
    
    
    
    
    
    public double getCosto() {
    	return costo;
    }
    
    
    
    
    
    
    public void setCosto(int costo) {
    	this.costo = costo;
    }
    
    
    
    
    	
    }
    codice:
    import java.util.*;
    public class libreria {
    
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Scanner acquisizione = new Scanner(System.in);
    
    
    		
    		
    		// inizio variabili dell'oggetto
    		String nome="nome";
    		String autore="autore";
    		int prezzo=1;		
    		Libro[] volumi;
            
    		// fine variabili dell'oggetto
    		
    	
    	    System.out.println("quanti libri vuoi inserire?: ");
    		
    		int numeroLibri=acquisizione.nextInt();
    		volumi=new Libro[numeroLibri];
    		
    		
    		
    		
    		
    		for (int numeroOggetto=0; numeroOggetto<5;numeroOggetto++)
    		{
    			System.out.println("Titolo libro?");
    			nome=acquisizione.nextLine();
    			
    			System.out.println("autore?");
    			autore=acquisizione.nextLine();
    			
    			System.out.println("prezzo?");
    			prezzo=acquisizione.nextInt();
    			
    			volumi[numeroOggetto]= new Libro(nome, autore, prezzo);
    		
    			
    		}
    		
    		for (int numeroOggetto=0; numeroOggetto<5;numeroOggetto++)
    		{
    			
    			System.out.println(volumi[numeroOggetto]);
    			
    		}
    		
    	
    	}
    
    
    }

    Anche se in maniera ancora elementare, so lavorare su degli oggetti elementari e tutta la trafila del passargli i parametri con metodi e costruttori, ma ora che sto cercando di creare un array di oggetti non riesco a raccapezzarmici, non capisco perchè non riesco ad invocare il metodo .setNome() per passare il relativo parametro, di conseguenza l'oggetto stampato restituisce dei valori assolutamente insensati.

    Abbiate pazienza, ho aperto libri/web e tutorial su java solo da 7 giorni

    Ringrazio in anticipo chiunque possa illuminarmi e mettermi sulla via giusta.

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    8
    Edit:

    Ho, sistemato alcune cose, adesso funge tutto tranne una cosa:

    Alla richiesta di nome, titolo e prezzo, viene passato solamente titolo e prezzo.


    codice:
    
    
    public class Libro {
    
    
    	private String nome, autore;
    	private int costo;
    	
    	
    	
       //costruttore
    /*	
    public Libro (String nome, String autore, int costo)
    {
    	this.setNome(nome);
    	this.setAutore(autore);
    	this.setCosto(costo);
    	
    	
    }
    */
    
    
    
    
    public String getNome() {
    	return nome;
    }
    
    
    
    
    
    
    public void setNome(String nome) {
    	this.nome = nome;
    }
    
    
    
    
    
    
    public String getAutore() {
    	return autore;
    }
    
    
    
    
    
    
    public void setAutore(String autore) {
    	this.autore = autore;
    }
    
    
    
    
    
    
    public int getCosto() {
    	return costo;
    }
    
    
    
    
    
    
    public void setCosto(int costo) {
    	this.costo = costo;
    }
    
    
    public String toString() {
        return this.getNome();
        	  
      }
    	
    }

    codice:
    import java.util.*;
    public class libreria {
    
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Scanner acquisizione = new Scanner(System.in);
    	
    		// inizio variabili dell'oggetto
    		String nome="";
    		String autore="";
    		int prezzo=1;		
    		Libro[] volumi;
            
    		// fine variabili dell'oggetto
    		
    	
    	    System.out.println("quanti libri vuoi inserire?: ");
    		
    		int numeroLibri=acquisizione.nextInt();
    		volumi=new Libro[numeroLibri];
    		
    		
    		
    		
    		
    		for (int numeroOggetto=0; numeroOggetto<numeroLibri;numeroOggetto++)
    		{
    			
    			volumi[numeroOggetto]= new Libro();
    			
    			System.out.println("Titolo libro?");
    			volumi[numeroOggetto].setNome(acquisizione.nextLine());
    			
    			System.out.println("autore?");
    			volumi[numeroOggetto].setAutore(acquisizione.nextLine());
    			
    			System.out.println("prezzo?");
    			volumi[numeroOggetto].setCosto(acquisizione.nextInt());
    			
    			
    		
    			
    		}
    		
    		for (int numeroOggetto=0; numeroOggetto<numeroLibri;numeroOggetto++)
    		{
    			
    			System.out.println(volumi[numeroOggetto].getNome()+
    					           volumi[numeroOggetto].getAutore()+
    					           volumi[numeroOggetto].getCosto()
    					);
    			
    		}
    		
    	
    	}
    
    
    }

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,019
    Sposto nel forum dedicato a Java.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,019
    Il problema principale è dato dall'istruzione acquisizione.nextInt().

    Sia dopo l'acquisizione del numero di libri da chiedere all'utente, che dopo la lettura del costo del singolo libro.

    Scanner lavora a tokens. Se l'ultimo token da te inserito è un numero seguito dal pulsante INVIO (come ci si aspetta per confermare l'inserimento), nextInt() restituirà (e consumerà dal buffer) il valore numerico... ma lascherà nel buffer l'INVIO.

    Quindi, dopo aver letto il token numerico con nextInt() devi preoccuparti di "pulire il buffer" andando a consumare il carattere INVIO che ancora c'è.

    Quindi (soluzione rapida), dopo aver letto il numero di libri e dopo aver letto il costo di ciascun libro, fai una chiamata a nextLine() a vuoto. Questo consumerà il carattere di INVIO che si trova nel buffer, pulendolo e predisponendolo per le prossime letture.


    Ciao.
    Ultima modifica di LeleFT; 14-01-2019 a 14:53
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2019 vBulletin Solutions, Inc. All rights reserved.