Guten Abend,
die Aufgabe lautet:
Da man keine Integer als generische Parameter übergeben kann, sollen die Grenzen dem Konstruktor übergeben werden. Die Länge soll von der Methode length zurückgegeben werden. Den []-Operator implementieren die Methoden get und set. Um auf die Elemente zugreifen zu können,soll zu dem ein Iterator implementiert werden. Verwenden Sie hierzu eine innere Klasse. Verändern Sie außerdem keine vorgegebene Methodensignatur.
Dabei gilt es eine Arrayklasse zu implementieren, deren obere und untere Grenze statisch frei wählbar sind.
Der bereit gestellte Code:
Ich hab allgemein Probleme mit der Aufgabe.
Mein Programm ist falsch, an der Problemstelle möchte ich es gerne zu einem Object casten, dann hab ich zum Beispiel [] bereitgestellt.
Falls ihr eine bessere Lösung habt, nehm ich gerne Vorschläge entgegen
die Aufgabe lautet:
Da man keine Integer als generische Parameter übergeben kann, sollen die Grenzen dem Konstruktor übergeben werden. Die Länge soll von der Methode length zurückgegeben werden. Den []-Operator implementieren die Methoden get und set. Um auf die Elemente zugreifen zu können,soll zu dem ein Iterator implementiert werden. Verwenden Sie hierzu eine innere Klasse. Verändern Sie außerdem keine vorgegebene Methodensignatur.
Dabei gilt es eine Arrayklasse zu implementieren, deren obere und untere Grenze statisch frei wählbar sind.
Der bereit gestellte Code:
Code:
import java.util.Iterator;
final public class Array<T> implements Iterable<T> {
public Array(int L, int H) {
}
public T get(int index) {
return null; }
public void set(int index, T v) { }
public int length() {
return 0; }
public Iterator<T> iterator() {
return null; }
// zu Testzwecken
public static void main(String[] args) {
Array<Integer> arr = new Array(-2, 1);
// Array<Integer> arr = new Array(1, -1) arrError; <- Laufzeitfehler
arr.set(-1, 42);
System.out.println("arr.length = " + arr.length()); // 4
System.out.println("arr[-1] = " + arr.get(-1)); // 42
for(Integer i : arr)
System.out.println("arr -> " + i); // null, 42, null, null
for(int i : arr)
System.out.println("arr -> " + i); // NPE
}
Ich hab allgemein Probleme mit der Aufgabe.
Mein Programm ist falsch, an der Problemstelle möchte ich es gerne zu einem Object casten, dann hab ich zum Beispiel [] bereitgestellt.
Code:
import java.util.Iterator;
final public class Array<T> implements Iterable<T> {
private Array<T> arr;
private int length;
private int left;
private int right;
public Array(int L, int H) {
left = L;
right = H;
length = H + L + 1;
arr = (Object) arr; //problemstelle
}
public T get(int index) {
return arr[index-left];
}
public void set(int index, T v) {
return arr[index-left];
}
public int length() {
return arr.length() }
public Iterator<T> iterator() {
return null; }
// zu Testzwecken
public static void main(String[] args) {
Array<Integer> arr = new Array(-2, 1);
// Array<Integer> arr = new Array(1, -1) arrError; <- Laufzeitfehler
arr.set(-1, 42);
System.out.println("arr.length = " + arr.length()); // 4
System.out.println("arr[-1] = " + arr.get(-1)); // 42
for(Integer i : arr)
System.out.println("arr -> " + i); // null, 42, null, null
for(int i : arr)
System.out.println("arr -> " + i); // NPE
}
}
Falls ihr eine bessere Lösung habt, nehm ich gerne Vorschläge entgegen