Array di oggetti

di il
1 risposte

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:



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;
}




	
}






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.

1 Risposte

  • Re: Array di oggetti

    Consiglio di usare un array dinamico con List<Libro>:

    Esempio di codice main:
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class Prova {
    
    	public static void main(String[] args) {
    		
    		/**
    		 * Crea un variabile volumi riferita ad un array dinamico di tipo Libro
    		 */
    		List<Libro> volumi = new ArrayList<>();
    		
    		/**
    		 * Aggiungi elementi all'array dinamico
    		 */
    		volumi.add(new Libro("nome1", "autore1", 20));
    		volumi.add(new Libro("nome2", "autore2", 25));
    		
    		/**
    		 * Stampa usando il metodo toSring della classe Libro
    		 */
    		System.out.println(volumi);
    		
    		/**
    		 * Stampa usando il "for-each"
    		 */
    		for (Libro volume : volumi) {
    			System.out.println(volume.getAutore());
    			System.out.println(volume.getNome());
    		}
    	}
    }
    
    Esempio di classe libro con metodo toString utile per il debug:
    
    public class Libro {
    
    	private String nome;
    	private String autore;
    	private int costo;
    	
    	public Libro(String nome, String autore, int costo) {
    		this.nome = nome;
    		this.autore = autore;
    		this.costo = 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;
    	}
    
    	@Override
    	public String toString() {
    		return "Libro [nome=" + nome + ", autore=" + autore + ", costo=" + costo + "]";
    	}
    }
    
Devi accedere o registrarti per scrivere nel forum
1 risposte