Iteratory

BA
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 259
0

Witam.

Mam za zadanie odczytywać ArrayListe za pomocą iteratora. Wcześniej na zajęciach korzystaliśmy z jakiegoś gotowego, tylko go kopiowaliśmy i teraz mam z tym problem. Próbowałem go wykorzystać, ale coś mi nie szło, ale może da się to zrobić za pomocą tego wbudowanego? Tylko mam problem, że nie do końca wiem jak. Proszę o pomoc.

Kopiuj
public class Karty {

	int kolor;
	int wartosc;
	
	public Karty(){
		kolor=0;
		wartosc=1;
	}
	
	public Karty(int kolor, int wartosc){
		this.kolor=kolor;
		this.wartosc=wartosc;
	}
}
Kopiuj
import java.util.ArrayList;
import java.util.Random;


public class Main {

	ArrayList<Karty> karty = new ArrayList<Karty>();
	

	public void tworzenieListy(){
		Random losowanieKart = new Random();
		for(int i=0;karty.get(i).wartosc==0;i++){
			int wartosc = losowanieKart.nextInt(13);
			int kolor = losowanieKart.nextInt(3);
			karty.add(i, new Karty(kolor, wartosc));
		}		
	}
	public void wyswietlanieListy(){
		PrzegladOdczyt it = new PrzegladOdczyt(karty.get(1)); // to jest za pomocą tego gotowego. 1 wziąłem do testu.
		it.first();
		while(!it.isDone()){ 
			System.out.println(it.current());
			it.next();
		}
	}
	public static void main(String[] args) {
		

	}

}

Jak najadę na

Kopiuj
PrzegladOdczyt it = new PrzegladOdczyt(karty.get(1));

to wyświetla mi się, że konstruktor dla PrzegladOdczyt(karty) jest nie zdefiniowany. Da radę ewentualnie jakoś go zdefiniować? Tylko jak ?:)

CI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 184
0

No to pokaż klasę PokazOdczyt. Konstruktor ma taką samą nazwę jak klasa ( twój także przyjmuje argument ).

CI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 184
0

Nie programowałem dużo w Java, ale tu:

Kopiuj
karty.get(1)

przesyłasz skonstruowany obiekt Karty na pierwszej pozycji listy generycznej karty, zatem konstruktor klasy PrzegladOdczyt winien mieć w parametrze:

Kopiuj
public PrzegladOdczyt(Karty karta)
    {
     _array=array;
     _first=0;
     _last=array.length-1;

No i tutaj do zmiany
    }

Konstruktor ten oczekuje tablicy przechowującej obiekty typu "Karty" i owszem ty taką listę generyczną masz, ale wsadzasz do niego konkretny obiekt, nie kolekcje.

CI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 184
0

A co się dzieje po zmianie parametru konstruktora? Jeśli nawet przesyłasz muż ArrayList<Karty> to zmień mu wejście na

Kopiuj
ArrayList<Karty> listaKart

.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.