Progetto Portafoglio - Problemi arrayList

di il
2 risposte

Progetto Portafoglio - Problemi arrayList

Ciao a tutti,
Questo è il mio codice.

Portafoglio:

package it.esercizi;

import java.util.ArrayList;
import java.util.Scanner;

public class Portafoglio {

	public double sommaTotale;
	public Portafoglio conteggio;

	public Portafoglio(double sommaTotale) {
		this.sommaTotale = sommaTotale;
	}

	public Portafoglio() {
		super();
	}
	
	

	public Portafoglio getConteggio() {
		return conteggio;
	}

	public void setConteggio(Portafoglio conteggio) {
		this.conteggio = conteggio;
	}

	public double getSommaTotale() {
		return sommaTotale;
	}

	public void setSommaTotale(double sommaTotale) {
		this.sommaTotale = sommaTotale;
	}

	public void aggiungiEuro(double euro) {
		this.sommaTotale += euro;
	}

	public void aggiungiLire(double lire) {
		this.sommaTotale += (lire / 1936.27);
	}

	public void togliEuro(double euro) {

		if (euro > this.getSommaTotale()) {
			System.out.println("Non ci sono abbastanza soldi");
		} else
			this.sommaTotale -= euro;
	}

	public void togliLire(double lire) {
		if (lire > this.getSommaTotale()) {
			System.out.println("Non ci sono abbastanza soldi");
		} else
			this.sommaTotale -= (lire / 1936.27);
	}

	public double quantiSoldi() {
		return sommaTotale;
	}

	public ArrayList<Portafoglio> menu(int n) {

		ArrayList<Portafoglio> list = new ArrayList<>();
	
		Portafoglio s = list.get(n);
		list.add(s);
		
		for (int i = 0; i < list.size(); i++) {
			Scanner in = new Scanner(System.in);

			System.out.println("Quanti euro vuoi aggiungere: ");
			double euro = in.nextDouble();
			list.get(i).aggiungiEuro(euro);
			
			System.out.println("Quanti lire vuoi aggiungere: ");
			double lire = in.nextDouble();
			list.get(i).aggiungiLire(lire);

			System.out.println("Quanti euro vuoi togliere: ");
			double e = in.nextDouble();
			list.get(i).togliEuro(e);

			System.out.println("Quanti lire vuoi togliere: ");
			double l = in.nextDouble();
			list.get(i).togliLire(l);

			list.add(s);
		}
		return list;

	}

}

Il problema che non m viene popolato la lista con più portafogli ho problema con i size.
Ad ogni valore di n ad esempio n=2, size doveva risultare a 2 è popolari la lista quando ha finito il ciclo due volte, ma non fa niente.
Il problema è qui dentro:
Portafoglio s = list.get(n);
list.add(s);

Questo è il test:

Portafoglio p1 = new Portafoglio();
		Scanner in = new Scanner(System.in);
		System.out.println("Quanti portafogli: ");
		int n = in.nextInt();
		ArrayList<Portafoglio> m = p1.menu(n);
		
		for (int i = 0; i < m.size(); i++) {
			System.out.println(m.get(i).quantiSoldi());
		}
Mi potete aiutare?

2 Risposte

  • Re: Progetto Portafoglio - Problemi arrayList

    imparareJava ha scritto:


    	public ArrayList<Portafoglio> menu(int n) {
    
    		ArrayList<Portafoglio> list = new ArrayList<>();
    	
    		Portafoglio s = list.get(n);
    		list.add(s);
    
    Premesso che la classe Portafoglio così come è scritta è un gran miscuglio di roba e non andrebbe fatta così ...

    Il problema è evidente all'inizio di menu(). Crei un NUOVO ArrayList, pertanto è vuoto, zero elementi. Non puoi quindi fare un list.get(n). Essendo vuoto, con qualunque valore di n (anche 0) ti becchi un IndexOutOfBoundsException.
  • Re: Progetto Portafoglio - Problemi arrayList

    Come faccio a risolvere? che soluzione mi consiglieresti?
Devi accedere o registrarti per scrivere nel forum
2 risposte