java array von methode ausgeben lassen

AMD_Rulez

Lieutenant
Registriert
Feb. 2010
Beiträge
582
hallo wie kann ich ein array mittels einer methode ausgeben lassen?
in methoden soll man system.out.println doch möglichst vermeiden.

soe siehts aus aber es funktioniert nicht:

Code:
		static int printArray(int[] values) {
		for (int i=0; i<values.length; i++) {
			//System.out.println(values[i]);
			return values[i];
			
		}
 
Hi,

definiere "ausgeben lassen". Auf dem Bildschirm? In einer Datei? Auf einem Drucker? In einem eigenen Fenster?

VG,
Mad
 
Und der Code den du gepostet hast ist natürlich totaler Quatsch. In jedem Schleifendurchlauf ein return-Statement? Das kann nichts werden. Die auskommentierte Zeile ist natürlich korrekt, gibt aber nur Eintragweise in der Console aus.
 
Code:
public void printArray(int [] values)
   {
       for (int i=0;i <values.length;i++)
       {
           System.out.println(values[i]);
        }
    }

So lässt du dein Array auf der Konsole ausgeben.
 
Du hast Recht, normalerweise versucht man die Ausgabe zu trennen, also möchtest du vermutlich Mehtode haben, die dir ein Array als string darstellt. Also zB String arrayToString(int[] array). Dafür gibt es allerdings, wie schon von Tumbleweed angemerkt in der Arrays Klasse Methoden, sodass man das nicht immer selber schreiben muss ("Don't repeat yourself" und "Not invented here" -> Schreib keinen doppelten Code und mach nichts was schon jemand anders geschrieben hat).

Falls du das aber zur Übung machen möchtest:
- Erstelle einen leeren String, den du am Ende zurückgibst
- An den String hängst du in einer Schleife die einzelnen Elemente an (und einen Separator, zB ein Komma)
-> Hier wird das Problem sein, dass du am Ende/Anfang einen Separator zuviel haben wirst
- Gib den String zurück
Das Grundgerüst hast du dafür schon, die Schleife in der du den String erweitern musst. Du darfst die Werte halt nicht direkt zurückgeben, in dem ersten Durchlauf würde die Funktion beendet und nur das erste Element würde als String ausgegeben.

Eine Anmerkung, wenn deine Funktion funktioniert: Allgemein sind Modifikationen in auf Strings in Java nicht performant, weil die dafür jedes mal kopiert werden. Zur Lösung des Problems gibt es den StringBuilder, der die Zwischenergebnisse speichert und am Ende den String erstellt.
 
NemesisFS schrieb:
Du hast Recht, normalerweise versucht man die Ausgabe zu trennen, also möchtest du vermutlich Mehtode haben, die dir ein Array als string darstellt. Also zB String arrayToString(int[] array). Dafür gibt es allerdings, wie schon von Tumbleweed angemerkt in der Arrays Klasse Methoden, sodass man das nicht immer selber schreiben muss ("Don't repeat yourself" und "Not invented here" -> Schreib keinen doppelten Code und mach nichts was schon jemand anders geschrieben hat).

Falls du das aber zur Übung machen möchtest:
- Erstelle einen leeren String, den du am Ende zurückgibst
- An den String hängst du in einer Schleife die einzelnen Elemente an (und einen Separator, zB ein Komma)
-> Hier wird das Problem sein, dass du am Ende/Anfang einen Separator zuviel haben wirst
- Gib den String zurück
Das Grundgerüst hast du dafür schon, die Schleife in der du den String erweitern musst. Du darfst die Werte halt nicht direkt zurückgeben, in dem ersten Durchlauf würde die Funktion beendet und nur das erste Element würde als String ausgegeben.

Eine Anmerkung, wenn deine Funktion funktioniert: Allgemein sind Modifikationen in auf Strings in Java nicht performant, weil die dafür jedes mal kopiert werden. Zur Lösung des Problems gibt es den StringBuilder, der die Zwischenergebnisse speichert und am Ende den String erstellt.

Man brauch dafür doch keinen StringBuilder um die Sache unnötig kompliziert zu machen. Ich denke es handelt sich bei seinem Problem um eine ganz normal Schulaufgabe. Er kann doch einfach das nehmen, was er hat und es mit System.out.print ganz normal ausgeben. Dann hat er doch schon die Lösung.
 
DHaDef schrieb:
Man brauch dafür doch keinen StringBuilder um die Sache unnötig kompliziert zu machen. Ich denke es handelt sich bei seinem Problem um eine ganz normal Schulaufgabe. Er kann doch einfach das nehmen, was er hat und es mit System.out.print ganz normal ausgeben. Dann hat er doch schon die Lösung.

Selbst wenn das "nur" eine Schulaufgabe ist, sollte man keinen schlechten Stil propagieren. Die Anmerkung hinsichtlich StringBuilder finde ich gerechtfertigt. So hat man die Problematik zumindest mal gehört und könnte bei Interesse eine bessere Lösung erstellen. Wesentlich komplizierter würde der Code dadurch nicht.

Wenn es nur um die Ausgabe geht, ginge es ohnehin kürzer:

Code:
Arrays.stream(values).forEach(System.out::println);
 
Zurück
Oben