ich habe folgendes Problem und bitte um Hilfe.
Ich möchte folgende Aufgabe lösen, bekommen jedoch einen Fehler, siehe unten markiert ("array required, but group found")
Frage: Warum kann ich nicht auf den Index des Objektes "ergebnis" zugreifen?
Aufgabenstellung:
Die Methode Group copy() gibt ein neu erzeugtes Objekt der Klasse Group zurück, das exakt dem
ausführenden Objekt entspricht und jeweils Kopien der in map vorhandenen Objekte der Klasse
Tuple an genau den gleichen Indizes enthält.
1. Klasse
public class Tuple
{
private String text;
private int value;
public Tuple(String t, int v)
{
text = t; value = v;
}
}
2. Klasse
public class Group
{
private Tuple[] map;
public Group (int n)
{
map = new Tuple[n];
}
public Group copy()
{
//-------------- Mein Code:
Group ergebnis = new Group(size());
for ( int i = 0 ; i < ergebnis.size() ; i++ )
{
ergebnis = map; <---------------------- für "ergebnis" bekomme ich folgenden Fehler: "array required, but group found"
}
Bitte Code in Code-Tags posten (die drei Punkte neben dem Smiley -> Code -> Java auswählen -> Code inkl. Einrückungen in das Textfeld einfügen).
Die Zeile, um die es geht, dürfte so lauten:
Java:
ergebnis[i]= map[i];
Ergebnis ist kein Array, sondern ein Objekt der Klasse Group. Daher kann auch nicht per Index-Operator zugegriffen werden (worauf soll sich denn der Index beziehen?)
vielen Dank für den Hinweis und die Schnelle Antwort. Dein Tipp hat funktioniert. Mein Code sieht jetzt wie folgt aus.
Ich habe noch eine Frage: Wie kann ich ergebnis.map verstehen? Ggf. so: Ich rufe auf dem Objekt "ergebnis" das Array "map" am Index "i" auf? Bis jetzt kannte ich nur, dass man mit dem "." auf einem Objekt eine Methode aufrufe, z.B. ergebnis.size()
Code:
public Group copy()
{
//--------------
Group ergebnis = new Group(size());
for ( int i = 0 ; i < ergebnis.size() ; i++ )
{
ergebnis.map[i] = map[i];
}
return ergebnis;
//-------------
}
Ich rufe auf dem Objekt "ergebnis" das Array "map" am Index "i" auf? Bis jetzt kannte ich nur, dass man mit dem "." auf einem Objekt eine Methode aufrufe, z.B. ergebnis.size()
Ja, fast: so wie Du Methoden aufrufen kannst, kannst Du auch auf Attribute zugreifen. Du greifst also auf das Attribut map des Objekts ergebnis zu. Da das Attribut map ein Array ist, kannst Du eben auch per Index auf ein Element des Arrays zugreifen.