Rückgabe Array

R

Ro0kie

Gast
Liebes Java-forum.org! :)

Ich habe folgendes Problem undzwar gibt meine Methode
Code:
zuArray()
ein Array als Rückgabetyp zurück,wie euch wahrscheinlich bekannt ist funktioniert folgender Code-Schnippsel nicht:

Java:
testarray2 = stapel.zuArray();

Wie kriege ich nun die Werte des Arrays in mein Testarray ?, ich würde mal schaätzen mit einer For-schleife aber wie ?

Danke im vorhinein. :)

MfG Ro0kie ;)
 
Zuletzt bearbeitet von einem Moderator:
S

SlaterB

Gast
> wie euch wahrscheinlich bekannt ist funktioniert folgender Code-Schnippsel nicht:

wieso sollte das bekannt sein? und was geht nicht? komplette Klassen/ Programme + Fehlermeldungen posten

und die Speicherung des Arrays in einer Variablen ist zwingend erforderlich,
danach kannst du wenn nötig in ein anderes Array kopieren, wie man das eben so mit Schleifen macht

hast du irgendwelche Kenntnisse zu Arrays und Schleifen, kannst du z.B. den Inhalt eines Arrays per Schleife ausgeben?
 
R

Ro0kie

Gast
hast du irgendwelche Kenntnisse zu Arrays und Schleifen, kannst du z.B. den Inhalt eines Arrays per Schleife ausgeben?
ja kann ich, Kenntnisse sind auch vorhanden.

Klasse MyQueue
Java:
import java.util.ArrayList;

/**
 * Klasse, die ähnlich wie eine ArrayList arbeitet,
 * jedoch nur erlaubt am Anfang ein Element hinzuzufügen und am Ende ein Element weg zu nehmen.
 * 
 * @author Martin S
 * @version 2011-05-14
 */
public class MyQueue extends ArrayList{ //Klasse erbt von ArrayList um sich die vielen Objekt zu ersparen.
	
	private ArrayList<String> arraylist;
	
	/**
	 * Konstruktor,welcher eine leere ArrayList initialisiert.
	 *  
	 */
	public MyQueue(){
		this.arraylist = new ArrayList<String>();
	}
	
	/**
	 * Methode zum hinzufügen einzelner Elemente an erster Stelle der ArrayList.
	 * 
	 * @param element String, welches in die Arraylist an erster Stelle hinzugefügt wird. 
	 */
	public void hinzufügen(String element){
		this.add(0,element);
	}
	
	/**
	 * Methode zum entfernen einzelner Elemente an letzter Stelle der ArrayList.
	 * 
	 */
	public void entfernen(){
		this.remove(arraylist.size());
	}
	
	/**
	 * Methode,welche mit Hilfe der toArray-Methode ein Array der ArrayList zurück gibt.
	 * 
	 * @return elemente
	 */
	public String[] zuArray(){
		String[] elemente = (String[]) this.toArray();
		 return elemente;
	}
	
	
	
}


Klasse MyStack
Java:
import java.util.ArrayList;

/**
 * Klasse, die ähnlich wie eine ArrayList arbeitet,
 * jedoch nur erlaubt am Ende ein Element einzufügen und am Ende ein Element weg zu nehmen.
 * 
 * @author Martin S
 * @version 2011-05-14
 */
public class MyStack extends ArrayList { //Klasse erbt von ArrayList um sich die vielen Objekt zu ersparen.
	
	private ArrayList<String> arraylist;
	
	/**
	 * Konstruktor,welcher eine leere ArrayList initialisiert.
	 *  
	 */
	public MyStack(){
		this.arraylist = new ArrayList<String>();
	}
	
	/**
	 * Methode zum hinzufügen einzelner Elemente an letzer Stelle der ArrayList.
	 * 
	 * @param element String, welches in die Arraylist an letzter Stelle hinzugefügt wird. 
	 */
	public void hinzufügen(String element){
		this.add(arraylist.size(),element);
	}
	
	/**
	 * Methode zum entfernen einzelner Elemente an letzter Stelle der ArrayList.
	 * 
	 */
	public void entfernen(){
		this.remove(arraylist.size());
	}
	
	/**
	 * Methode,welche mit Hilfe der toArray-Methode ein Array der ArrayList zurück gibt.
	 * 
	 * @return elemente 
	 */
	public String[] zuArray(){
		 String[] elemente = (String[]) this.toArray();
		 return elemente;
	}

}

Klasse MyArrayListTest:
Java:
/**
 * Testklasse für die Klassen MyQueue und MyStack.
 * 
 * @author Martin S
 * @version 2011-05-14
 */
public class MyArrayListTest {
	public static void main (String[] args){
		
		// Objekter der beiden Klassen erzeugen
		MyQueue warteschlange = new MyQueue();
		MyStack stapel = new MyStack();
		
		String[] testarray1 =new String[warteschlange.size()];
		String[] testarray2 =new String[stapel.size()];
		
		//Befüllen der ArrayList's
		for(int i=0;i <10;i++){
			stapel.hinzufügen(""+i);
			warteschlange.hinzufügen(""+i);
		}
		
		//ArrayList umwandeln in Array
		testarray1 = warteschlange.zuArray();
		testarray2 = stapel.zuArray();
		
		//Ausgeben der Testarrays
		for(int j =0;j<testarray1.length;j++){
			System.out.print("" + testarray1[j]);
			System.out.print("" + testarray2[j]);	
		}
	}
}



Fehlermeldung:
Code:
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
	at MyQueue.zuArray(MyQueue.java:45)
	at MyArrayListTest.main(MyArrayListTest.java:24)
 

eRaaaa

Top Contributor
Die Methode toArray liefert dir ein Object-Array zurück, das kannst du nicht einfach zu einem String-Array casten!
Es gibt aber noch eine weitere überladene Methode die du nutzen kannst
http://download.oracle.com/javase/6/docs/api/java/util/ArrayList.html#toArray%28T[]%29

Deine zuArray-Methoden musst du also anpassen
Java:
String[] elemente = (String[]) this.toArray(new String[]{});

Wenn du bei deiner Liste auch Generics verwenden würdest, wäre auch der Cast hier unnötig! (verstehe eh nicht wieso du da quasi zwei ArrayListen hast (this + arraylist)
 
S

SlaterB

Gast
ja kann ich, Kenntnisse sind auch vorhanden.
unbeachtet der bereits genannten Lösungen zu deinem Code, wieso fragst du dann wie man Arrays kopiert?
denke für dieses Einzelproblem doch etwas nach,
Code hast du hier als Antwort auf meine Frage direkt nicht gepostet, aber in der allgemeinen Menge sehe ich:
Java:
 for(int j =0;j<testarray1.length;j++){
     System.out.print("" + testarray1[j]);
     System.out.print("" + testarray2[j]);   
 }
eine Schleife über den Index, Arrayzugriff mit [index], was spricht gegen einen Schleifeninhalt
Java:
 for(int j =0;j<testarray1.length;j++){
     testarray1[j] = testarray2[j];   
 }
?
du siehst, Array-Kopieren mit Schleife ist eine ganz einfache Sache,
noch schöner ist es wenn man selber darauf kommt, Konzentration + Ausprobieren, das sind noch einfache Themen!
 

Guardi

Bekanntes Mitglied
edit:
Ich nehms zurück ;)
Ich hätte mir mal anschauen sollen was du realisieren willst (Stack, Queue)

Soll deine ArrayList nur Strings aufnehmen?
Dann benutze Generics. Einfach mal nach Collection und Generics googlen.
 
Zuletzt bearbeitet:
R

Ro0kie

Gast
Also ich hab die Testklasse jz nochmal geändert bzw. die Anwesiung von eRaaaa befolgt aber komischer weise entfernt er mir das letzte Element nicht :bahnhof:

Java:
/**
 * Testklasse für die Klassen MyQueue und MyStack.
 *
 * @author Martin S
 * @version 2011-05-14
 */
public class MyArrayListTest {
	public static void main (String[] args){

		// Objekter der beiden Klassen erzeugen
		MyQueue warteschlange = new MyQueue();
		MyStack stapel = new MyStack();

		String[] testarray1 =new String[warteschlange.size()];
		String[] testarray2 =new String[stapel.size()];

		//Befüllen der ArrayList's
		for(int i=0;i <10;i++){
			stapel.hinzufügen(""+i);
			warteschlange.hinzufügen(""+i);
		}

		//ArrayList umwandeln in Array
		testarray1 = warteschlange.zuArray();
		testarray2 = stapel.zuArray();

		//Ausgeben des Testarrays1
		for(int j =0;j<testarray1.length;j++){
			System.out.println("" + testarray1[j]);
		}
                System.out.println("");


                //Ausgeben des Testarrays2
		for(int j =0;j<testarray2.length;j++){
			System.out.println("" + testarray2[j]);
		}
                System.out.println("---------------------------"); // Trennzeile

                //Entfernen eines Elementes
                stapel.entfernen();
                warteschlange.entfernen();

                //Ausgeben der Testarrays nach entfernen eines Elementes

                // Testarrays1
		for(int j =0;j<testarray1.length;j++){
			System.out.println("" + testarray1[j]);
		}
                System.out.println("");

                //Testarrays2
		for(int j =0;j<testarray2.length;j++){
			System.out.println("" + testarray2[j]);
		}
	}
}

Irgendwelche Ideen ?
 

eRaaaa

Top Contributor
Irgendwelche Ideen ?

Die wurden dir schon ans Herz gelegt. Du hantierst dort mit zwei verschiedenen ArrayListen jeweils rum. Einmal this(du erweiterst ArrayList!, wieso?) und eben die ArrayList
Code:
arraylist
!

Aber das Problem ist noch ein anderes. Nach dem Entfernen, musst du natürlich dir dann die Arrays erneut holen! Du gibst ja danach weiterhin die alten aus!
Also nach
Java:
		// Entfernen eines Elementes
		stapel.entfernen();
		warteschlange.entfernen();

noch mal

Java:
		// ArrayList umwandeln in Array
		testarray1 = warteschlange.zuArray();
		testarray2 = stapel.zuArray();

Aber überdenke das mit deinen Listen nochmal, das Erweitern von ArrayList ist eig. nicht notwendig, genau genommen sogar falsch :)
 
R

Ro0kie

Gast
Die wurden dir schon ans Herz gelegt. Du hantierst dort mit zwei verschiedenen ArrayListen jeweils rum. Einmal this(du erweiterst ArrayList!, wieso?) und eben die ArrayList
Code:
arraylist
!

Also das ist eine Hausaufgabe unseres APR-Schulfach's (Angewandtes Programmieren). Vieleicht wirds verständlicher wenn ich die Angabe einmal poste ;) :

Erstelle eine Klasse MyQueue, die ähnlich wie eine ArrayList arbeitet, jedoch nur erlaubt am Anfang ein Element einzufügen und am Ende ein Element weg zu nehmen. Realisiere diese Klasse mittels eines Attributes vom Typ ArrayList.

Erstelle eine Klasse MyStack, die ähnlich wie eine ArrayList arbeitet, jedoch nur erlaubt am Ende ein Element einzufügen und am Ende ein Element weg zu nehmen. Realisiere diese Klasse mittels eines Attributes vom Typ ArrayList.

Erstelle für beide Klassen folgende Methode:

Konstruktor, der eine leere ArrayList erzeugt.
add-Methode, die ein Objekt hinzufügt
remove-Methode, die ein Element entfernt und dieses zurück gibt.
toArray-Methode, die alle Elemente als Objekt-Array zurück gibt.


Erstelle eine Testklasse, die obige Klassen ausreichend testet.Beachte alle Sonderfälle!
[/QOUTE]

By the way hier die Ausgabe :
myarraylist.jpg


Hab ich irgendeinen Sonderfall vergessen ?
 
Zuletzt bearbeitet von einem Moderator:

eRaaaa

Top Contributor
Naja, da steht eben nichts davon dass du ArrayList erweitern sollst, sondern einfach ganz normal die normale ArrayList verwenden sollst, eben als Attribut, so wie du es auch schon hast.
Java:
public class MyStack extends ArrayList { //Klasse erbt von ArrayList um sich die vielen Objekt zu ersparen.

dass da steht aber nicht so im Text. Und wenn ich mir den Kommentar anschaue, scheinst du auch nicht richtig verstanden zu haben was
Code:
extends
bedeutet, bzw wo/wie/wann man das genau einsetzt oder?
 
R

Ro0kie

Gast
Realisiere diese Klasse mittels eines Attributes vom Typ ArrayList.
Das hab ich ja gemacht mit
Code:
private ArrayList<String> arraylist;

und wenn ich jz die Methoden der Klasse ArrayList verwende die ich durch Vererbung bekomme kann ich ja nicht diese spezifischen Begrenzungen für Queue und Stack setzen.

Oder wie hättest du das gemeint ?
 

eRaaaa

Top Contributor
Das hab ich ja gemacht mit
Code:
private ArrayList<String> arraylist;
Ja, das schrieb ich ja auch bereits dass das ok war!

und wenn ich jz die Methoden der Klasse ArrayList verwende die ich durch Vererbung bekomme kann ich ja nicht diese spezifischen Begrenzungen für Queue und Stack setzen.

Oder wie hättest du das gemeint ?

Hä? Die ArrayList Methoden bleiben doch gleich, ob du nun this oder arraylist verwendest. Dass du eigene Methoden schreiben sollst, ist klar!
Nochmal: Was ich sagen will ist, das Erweitern von ArrayList(also das extends ArrayList) solltest du überdenken --> weg machen :D
 

Eldorado

Bekanntes Mitglied
Erstelle ein Objekt und benutze dies in jeder Methode (das du ja auch schon hast...) ... Stichwort: Instanzvariable...
 
Zuletzt bearbeitet:

eRaaaa

Top Contributor
Wie du meinst mach ich halt für jede Metohde ein Objekt,jetzt hab ichs auch :)

???:L Du scheinst es immer noch nicht verstanden zu haben, ich weiß allerdings auch nicht was du dir immer dabei denkst mit "mache ich halt für jede Methode ein Objekt"- ich kann deinen Gedankengang nicht nachvollziehen. Vllt. postest du echt mal den Code den du denkst, vllt verstehe ich dann was du dir dabei denkst.
Aber eig. musst du eben nur alle this`s durch arraylist austauschen und das extends weglassen dann sieht man weiter :D
 
R

Ro0kie

Gast
Ich wusste nicht das mann diese Methode gleich auf das Attribut anwenden kann :( und da ein Objekt ja nur innerhalb von Methoden arbeiten kann...

ist nur blöd weil dann muss ich noch eine extra
Code:
size()-Methode
schreiben..
 
Zuletzt bearbeitet von einem Moderator:

eRaaaa

Top Contributor
ist nur blöd weil dann muss ich noch eine extra
Code:
size()-Methode
schreiben..

NEEEEEIN! Du kannst die doch von der ArrayList
Code:
arraylist
benutzen! :bahnhof:

edit: ahh es geht dir um die Benutzung außerhalb deiner Klasse, ok!
 
Zuletzt bearbeitet:
R

Ro0kie

Gast
Um
Code:
size()
in der Testklasse zu benützen brauch ich ja ein Objekt aber mann kan kein Objekt eines Attributs machen und wenn ich die ArrayList Klasse benutze klappst auch nicht :bahnhof:
 

GuPhisch

Mitglied
Hi,

Bsp. für Erweiterung MyQueue mit size:
Java:
public int getMyQueueSize(){
  return deineMyQueueArrayListInstanzVariable.size();
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Methode mit Array als Rückgabe This method must return a result of Type int[] Java Basics - Anfänger-Themen 2
L [Verständnisproblem] Array wird trotz void rückgabe verändert. Java Basics - Anfänger-Themen 5
S Rückgabe-Array lässt sich nicht auslesen, LocalDate mit String Java Basics - Anfänger-Themen 3
H Array wird verändert ohne Rückgabe? Java Basics - Anfänger-Themen 7
S Rückgabe von einem Array Java Basics - Anfänger-Themen 7
G Problem mit der Rückgabe von einem Array Java Basics - Anfänger-Themen 3
G Array Rückgabe aus Programm Java Basics - Anfänger-Themen 6
G Rückgabe mehrdimensionales Array Java Basics - Anfänger-Themen 3
XWing Methoden rückgabe Problem? Java Basics - Anfänger-Themen 6
G Endlosschleife keine Rückgabe Java Basics - Anfänger-Themen 36
R Rückgabe: verkettete Liste Java Basics - Anfänger-Themen 2
Z Rückgabe eines Values in umgekehrte richtung Java Basics - Anfänger-Themen 5
M Rückgabe eines Arrays Java Basics - Anfänger-Themen 10
R Methode Rückgabe Java Basics - Anfänger-Themen 10
D Methode mit Übergabe double und Rückgabe String Java Basics - Anfänger-Themen 2
J Rückgabe-Problem Java Basics - Anfänger-Themen 10
B Rückgabe von zwei Werten: String und double Java Basics - Anfänger-Themen 14
N Best Practice Rückgabe eines Terminal Befehls in eine Variable speichern Java Basics - Anfänger-Themen 27
J Funktionen auf der Rückgabe eines Stacks (pop) Java Basics - Anfänger-Themen 6
karlmasutra Klassen Rückgabe eines Wertes aus einer anderen Klasse Java Basics - Anfänger-Themen 3
V Methoden Rekursive Methode mit String als Rückgabe Java Basics - Anfänger-Themen 7
S Rekursion Rückgabe - Türme von Hanoi Java Basics - Anfänger-Themen 16
F Konsolen Befehl ausführen und Rückgabe auswerten Java Basics - Anfänger-Themen 3
F Get/Post als eigener Thread mit Rückgabe Java Basics - Anfänger-Themen 5
L Probleme bei Rückgabe eines Arrays in einer Methode Java Basics - Anfänger-Themen 47
L Frage zur Rückgabe von Werten bei Methoden Java Basics - Anfänger-Themen 4
P Rückgabe erflogt nicht als Double Java Basics - Anfänger-Themen 2
D Methoden ArrayList Rückgabe bringt komische Werte Java Basics - Anfänger-Themen 12
M Übergabe / Rückgabe Java Basics - Anfänger-Themen 6
A Rückgabe in for-Schleife Java Basics - Anfänger-Themen 2
I Rückgabe und Aufruf einer Methode innerhalb einer anderen Methode Java Basics - Anfänger-Themen 5
G Methoden mehrdimonsionale Arrays als Rückgabe Java Basics - Anfänger-Themen 2
S Methode rückgabe wiederverwenden Java Basics - Anfänger-Themen 4
J Rückgabe als Wert, keine Referenz Java Basics - Anfänger-Themen 3
llabusch Methoden Rückgabe einer Methode verwerden Java Basics - Anfänger-Themen 1
S Methoden void-Methode: Wieso gibt es eine Rückgabe? Java Basics - Anfänger-Themen 5
R public static void Rückgabe Java Basics - Anfänger-Themen 5
S Problem mit Rückgabe Wert von Methoden Java Basics - Anfänger-Themen 5
M Serialize - Fehler bei Rückgabe von Objekt Java Basics - Anfänger-Themen 5
R CMD Rückgabe durchlesen Java Basics - Anfänger-Themen 14
W Rückgabe Methode mit Feld Java Basics - Anfänger-Themen 4
A Rekursion in Baum und ArrayList als Rückgabe Java Basics - Anfänger-Themen 2
N Rückgabe der Werte funktioniert nicht Java Basics - Anfänger-Themen 9
F Problem bei Rückgabe von StringBuffer aus Methode Java Basics - Anfänger-Themen 6
N HashMap fehlerhafte Rückgabe Java Basics - Anfänger-Themen 7
K Problem mit der Rückgabe Java Basics - Anfänger-Themen 3
G Klasse überschreiben wenn Rückgabe über Methode Java Basics - Anfänger-Themen 6
M Methode mit Rückgabe Java Basics - Anfänger-Themen 2
D Maximum Subarray Problem; Problem mit der Rückgabe Java Basics - Anfänger-Themen 10
N Methoden und deren Rückgabe Java Basics - Anfänger-Themen 4
D Rückgabe einer Klasse Java Basics - Anfänger-Themen 20
H TreeMap Rückgabe - Compiler-Warnings Java Basics - Anfänger-Themen 9
M Rückgabe bei Exception Java Basics - Anfänger-Themen 4
H Rekursion und Rückgabe Java Basics - Anfänger-Themen 11
K Rückgabe aus Formular Java Basics - Anfänger-Themen 3
S HashMap: Rückgabe des key zu bestimmten value Java Basics - Anfänger-Themen 3
B "vollständige" Resultat Rückgabe Java Basics - Anfänger-Themen 8
A Beschreibung von Code und Rückgabe von Anzahl in ArrayList Java Basics - Anfänger-Themen 5
C Parameter rückgabe nach Prüfung an Klasse/Methode Java Basics - Anfänger-Themen 2
R Rückgabe vom ActionListener Java Basics - Anfänger-Themen 12
B JavaFilter true rückgabe Java Basics - Anfänger-Themen 23
S Rückgabe eines eingelesenen 2D Arrays aus Klasse heraus Java Basics - Anfänger-Themen 3
J datentyp -objectTyp Rückgabe Java Basics - Anfänger-Themen 2
zilti PHP-Script aufrufen und Rückgabe lesen Java Basics - Anfänger-Themen 2
0 Probleme bei Threads mit Rückgabe. Java Basics - Anfänger-Themen 6
C Rückgabe bei methoden Java Basics - Anfänger-Themen 2
S Probleme mit InputStream- Rückgabe Java Basics - Anfänger-Themen 4
G Warum ist die Rückgabe kein Integer? Java Basics - Anfänger-Themen 5
G Rückgabe Java Basics - Anfänger-Themen 6
G Rückgabe einer Kopie bzw. Referenz Java Basics - Anfänger-Themen 22
G Rückgabe einer Methoden bei Schließen des Fensters Java Basics - Anfänger-Themen 3
M Rückgabe funktioniert nicht! Java Basics - Anfänger-Themen 4
F Rückgabe eines Array´s aus einer Methode Java Basics - Anfänger-Themen 3
M Rückgabe oder Parameter? Java Basics - Anfänger-Themen 5
H Konstruktor mit Rückgabe Java Basics - Anfänger-Themen 13
L Rückgabe Java Basics - Anfänger-Themen 4
D Rückgabe von Arrays Java Basics - Anfänger-Themen 6
T Array verkleinern Java Basics - Anfänger-Themen 2
J Array aus Numberfield Eingaben Java Basics - Anfänger-Themen 7
D Array List mit Objekten sortieren Java Basics - Anfänger-Themen 2
onlyxlia Anzahl Random Zahlen mit Scanner abfragen und in Array speichern Java Basics - Anfänger-Themen 10
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
Ü Zweidimensionales Array in der ersten Zeile deklarieren Java Basics - Anfänger-Themen 13
Thomas Uppe 2D Array Reihenfolge vermischen Java Basics - Anfänger-Themen 4
T array auslesen Java Basics - Anfänger-Themen 2
Nitrogames Variablen Variable aus JOptionPane Abfrage in Array einfügen Java Basics - Anfänger-Themen 4
moini Auf Array aus Superklasse zugreifen? Java Basics - Anfänger-Themen 2
J ArrayList in 2D-Array konvertieren. Java Basics - Anfänger-Themen 48
M NullPointerException: Cannot read the array length because "this.Kinder" is null Java Basics - Anfänger-Themen 1
P Wieso kann ich als Index für einen Array einen Char angeben? Java Basics - Anfänger-Themen 3
Finn_lol Fehlermeldung bei Schleife mit Array Java Basics - Anfänger-Themen 4
Proxy Chars vor array übergabe toLowerUpcase Java Basics - Anfänger-Themen 14
iAmFaiinez Primzahlen Tester ohne Array Java Basics - Anfänger-Themen 4
S array 2 dimensional treppe Java Basics - Anfänger-Themen 3
S Array 2x2 Blöcke mit 0 und 1 Java Basics - Anfänger-Themen 10
C Array von Klassen Java Basics - Anfänger-Themen 2
julian0507 2Dim-Array Spaltensummen Java Basics - Anfänger-Themen 1
XWing Doppelte Zahlen im Array Java Basics - Anfänger-Themen 8
melisax Java 2D-Array Tabelle Java Basics - Anfänger-Themen 4
melisax Java Array Wert an bestimmtem Index angeben Java Basics - Anfänger-Themen 14

Ähnliche Java Themen

Neue Themen


Oben