Dodanie różnych typów danych do ArrayListy

0
public class Lodowka {

	int kodKreskowy;
	String nazwa;
	double cena;
	int ilosc;
	
	List<Object> listaWszystkichProduktow = new ArrayList<>();

	listaWszystkichProduktow.add(12345, "krokiety z gyrosem", 3.0, 20);
	listaWszystkichProduktow.add(13254, "krokiety z majonezem", 3.5, 20);

Chciałbym dodać produkty do lodówki. Ale się nie da. Dlaczego?

0

Utwórz klasę Produkt z odpowiednim konstruktorem.

listaWszystkichProduktow.add(new Product(12345, "krokiety z gyrosem", 3.0, 20));
0
public class Produkt {

	int kodKreskowy;
	String nazwa;
	double cena;
	int ilosc;

	public Produkt(int kodKreskowy, String nazwa, double cena, int ilosc) {
		this.kodKreskowy = kodKreskowy;
		this.nazwa = nazwa;
		this.cena = cena;
		this.ilosc = ilosc;
	}
}
public class Lodowka {

	List <Produkt> lodowka = new ArrayList<Produkt>();
	lodowka.add(new Produkt(12345, "krokiety z gyrosem", 3.0, 20));
	lodowka.add(new Produkt(13254, "krokiety z majonezem", 3.5, 20));
	
}

Czego tutaj brakuje?

0

Kod (inny niż deklaracje i inicjalizacje zmiennych) musi być zawarty w metodach, w klasie Produkt jest, a w klasie Lodowka, nie.

0

Dzięki, rzeczywiście poszło.

Ostatnie pytanie na dzisiaj, jak wyświetlić zawartość arraylisty lodowka?

		System.out.println(Arrays.toString(lodowka.toArray()));
		System.out.println(Arrays.toString(lodowka));
		System.out.println(Arrays.deepToString(lodowka));	

Probowalem sposobami powyzej, ale nic z tego.

0

Napisz w klasie Produkt metodę toString, np. tak:

public String toString()
{
    return nazwa+" "+kodKreskowy+" "+cena+" "+ilosc;
}

Wtedy drugi sposób zadziała.

0

Nie wiem czemu wyskakuje mi taki błąd:

Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The method toString(long[]) in the type Arrays is not applicable for the arguments (List<Produkt>)

public class Lodowka {

	List<Produkt> lodowka = new ArrayList<Produkt>();
	Produkt produkt = new Produkt();

	public void ladujeDomyslneKrokiety() {
		lodowka.add(new Produkt(12345, "krokiety z gyrrrrrosem", 3.0, 20));
		lodowka.add(new Produkt(13254, "krokiety z majonezem", 3.5, 20));
	}

	public void pokazZawartoscLodowki() {
		System.out.println(Arrays.toString(lodowka));
	}
}
public class Produkt {

	private int kodKreskowy;
	private String nazwa;
	private double cena;
	private int ilosc;

	public Produkt(int kodKreskowy, String nazwa, double cena, int ilosc) {
		this.kodKreskowy = kodKreskowy;
		this.nazwa = nazwa;
		this.cena = cena;
		this.ilosc = ilosc;
	}

	public Produkt() {
		super();
	}

	public int getKodKreskowy() {
		return kodKreskowy;
	}

	public String getNazwa() {
		return nazwa;
	}

	public double getCena() {
		return cena;
	}

	public int getIlosc() {
		return ilosc;
	}

	public void setIlosc(int ilosc) {
		this.ilosc = ilosc;
	}

	// public String toString() {
	// return "Lodowka [lodowka=" + getNazwa() + getKodKreskowy() + getIlosc() +
	// getCena();
	// }

	public String toString() {
		return nazwa + " " + kodKreskowy + " " + cena + " " + ilosc;
	}
}
0

Nie wiem czemu

Bo nie rozumiesz co piszesz, tylko sklejasz jakieś losowe kawalki kodu. Popatrz moze na dostępne sygnatury dla Arrays.toString(). Nie ma tam takiej która przyjmuje obiekty Lodowka, co zresztą dość logiczne bo skąd ktoś pisząc metodę Arrays.toString() miałby wiedzieć że ktoś taki jak ty napisze tą lodówkę? Ta metoda oczekuje tablicy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1