Hallo,
ich habe eine Aufgabe (siehe Bild).
Im grunde gehts darum einen Iterator zu schreiben der die Zahlen einen mehrdimensionalen Arrays ausgibt und selbständig erkennt wann ein Array endet. Dann muss er gegebenfalls in den nächsten springen.
Mein Code:
Main:
Momentan wird nur die erste Zeile ausgeben also:
1
9
4
Nur ich finde irgendwie meinen Fehler grad nicht.
Wäre super wenn mir jemand hilft.
Danke
mfg werdas34
ich habe eine Aufgabe (siehe Bild).
Im grunde gehts darum einen Iterator zu schreiben der die Zahlen einen mehrdimensionalen Arrays ausgibt und selbständig erkennt wann ein Array endet. Dann muss er gegebenfalls in den nächsten springen.
Mein Code:
Java:
import java.util.Iterator;
public class IterableArrays implements Iterable<Integer> {
private final int[][] arrays;
public IterableArrays(int[]... arrays) {
this.arrays = arrays;
}
@Override
public Iterator<Integer> iterator() {
return new IntIterator();
}
private class IntIterator implements Iterator<Integer> {
private int indexArr = 0;
private int indexCurrentElement = 0;
private void findNext() {
if (this.hasNext()) {
if (arrays[indexArr].length < arrays.length) {
indexArr++;
indexCurrentElement = 0;
}
}
}
@Override
public boolean hasNext() {
return indexCurrentElement < arrays[indexArr].length;
}
@Override
public Integer next() {
findNext();
return arrays[indexArr][indexCurrentElement++];
}
public void remove() {
throw new UnsupportedOperationException();
}
}
}
Java:
import java.util.Iterator;
public class Main {
public static void main(String[] args) {
int[][] arr =
{ { 1, 9, 4 },
{ 0, 2},
{ 0, 1, 2, 3, 4 } };
IterableArrays it = new IterableArrays(arr);
Iterator<Integer> iter = it.iterator();
while(iter.hasNext()) {
System.out.println(iter.next());
}
}
}
Momentan wird nur die erste Zeile ausgeben also:
1
9
4
Nur ich finde irgendwie meinen Fehler grad nicht.
Wäre super wenn mir jemand hilft.
Danke
mfg werdas34