Funktion mit mehreren Rückgabewerten aka Prozeduren?

berndoa

Top Contributor
Hallo,
in anderen Sprachen (zumindest in Pascal) gibt es ja Prozeduren, die im Prinzip Funktionen sind, aber mehr als einen Output zurückgeben.

Problem ist:
Ich habe 3 Arrays mit Zahlen vorgegeben, mit denen ich arbeite.

Eine mögliche FUnktion die ich beispielsweise gerne hätte, wäre dass ich in eine FUnktion 1 Array reingebe und erhalte als Ouput sowohl die Anzahl der vorhandenen Nullen im Array als integer, sowie ein Array, in dem die Indizes der "nullstellen" gespeichert sind.


Mit Funktionen ist sowas ja shcwelrich zu realisierren und beide Werte in ein weiteres, einzelnes Array reinzupacken, macht das Ganze extrem unübersichtlich.

Gibts da irgendeine smarte Lösung, wie man so eine Funktion mit mehreren Rückgabeparametern realisieren kann?
 

Tarrew

Top Contributor
Das ist alles andere als kompliziert und gängiges Vorgehen in objektorientieren Sprachen ;)

Java:
public class Test{

    public static void main(String[] args) {
        int[] numbers = new int[]{1, 5, 0, 2, 5, 0, 3, 4, 0, 2, 0};

        SomeInformation si = getSomeInformation(numbers);
        System.out.println("Anzahl Nullen: " + si.getNumberOfZeroes());
        System.out.println("Indizes: " + Arrays.toString(si.getZeroIndices()));
    }

    static SomeInformation getSomeInformation(int[] numbers) {
        int numberOfZeroes = (int) Arrays.stream(numbers).filter(e -> e == 0).count();
        int[] zeroIndices = IntStream.range(0, numbers.length).filter(i -> numbers[i] == 0).toArray();

        return new SomeInformation(numberOfZeroes, zeroIndices);
    }
}

class SomeInformation {

    private int numberOfZeroes;
    private int[] zeroIndices;

    public SomeInformation(int numberOfZeroes, int[] zeroIndices) {
        this.numberOfZeroes = numberOfZeroes;
        this.zeroIndices = zeroIndices;
    }

    public int getNumberOfZeroes() {
        return numberOfZeroes;
    }

    public int[] getZeroIndices() {
        return zeroIndices;
    }
}
 
Zuletzt bearbeitet:

berndoa

Top Contributor
Ich will aber nicht mit klassen und objekten rumspielen, bei den ganzen array indizeaufrufen den Überblick zu behalten, reicht mir schon :)

Frage:
Wenn ich ein Doppelarray initialisieren will, (d.h. das Array besteht aus 2 Elementen, die selbst Arrays sind)
und die 2 "Unterarrays" ungleiche Länge haben, wie kann ich das initialisieren?

Habe Doppelarrays üblicherweise mit new int[2][5] initialisiert.
Was aber wenn ich von Anfang an weiß dass im hauptarray das erste Array nur 4 Elemente und das 2. 6 Elemente hat?'Kann man das bei der Initialisierung gleich berücksichtigen, ohne später die Unterarrays auf die passende Länge anpassen zu müssern?

Und nein, zum Initialisierungszeitpunkt kenne ich noch keine genauen Zahlen, also direktes Array angeben ist nicht.
Kenne nur die 2 Arraygrößen
 

mrBrown

Super-Moderator
Mitarbeiter
Ich will aber nicht mit klassen und objekten rumspielen, bei den ganzen array indizeaufrufen den Überblick zu behalten, reicht mir schon :)
Klassen und Objekte mit sinnvollen Namen sind deutlicher einfacher zu händeln as Arrays :)

In dem genannten Fall mit Anzahl und Indizes ist allerdings noch einfacher, einfach nur eine Liste/Set/Array der Indizes zurückzugeben. Damit dann die Anzahl zu ermitteln ist dann doch trivial...
 

berndoa

Top Contributor
Ich will das "das komplette Array, durchgehen, Nullen zählen, und merken wo alles nullen sind" ja gerade in eine Prozedur auslagern um einerseits mehr Ordnung im Code zu haben.
und andererseits weil das alle x Splitsekunden durchgeführt wird und ich mir da effizienzeffekte erhoffe :)
 

mrBrown

Super-Moderator
Mitarbeiter
Dafür brauchst du nicht mehrere Rückgabewerte, sondern einfach nur ein int[] getNullIndices(...[] array). Der eine Rückgabetyp enthält ja dann sowohl Anzahl als auch Werte :)
 
K

kneitzel

Gast
Ich will das "das komplette Array, durchgehen, Nullen zählen, und merken wo alles nullen sind" ja gerade in eine Prozedur auslagern um einerseits mehr Ordnung im Code zu haben.
und andererseits weil das alle x Splitsekunden durchgeführt wird und ich mir da effizienzeffekte erhoffe :)
Also wenn ich das höre, dass Du da ständig ein Array mehrmals pro Sekunde durchgehen willst, dann ist mein Gedanke, ob es nicht sinnvoller wäre, da statt einem dummen array doch eine Klasse draus zu machen, das dann alle relevanten Informationen vorhält. Also bei Veränderungen werden die Daten direkt angepasst und wenn Du dann Nullstellen brauchst oder die Anzahl der Nullen, dann hast Du die Daten direkt und musst nicht erst durch ein Array durchgehen....

Zumindest sollte man das alles kapseln, denn dann kannst Du später, so du feststellst, dass die Performance nicht ausreicht, die Datenhaltung ändern ohne alles umändern zu müssen.

==> Halt die einfachen Dinge bei objektorientierte Entwicklung mit Kapselung der Daten :)
 

LimDul

Top Contributor
Ist aber in den meisten Fällen die bessere Lösung. Arrays sind oft (nicht immer) ein Zeichen, das man es sich komplizierter als nötig macht. Den Arrays sind einfach nur "dumme" Datenbehälter. Sobald man Logik braucht, scheitert man mit denen - da ist es sinnvoller eine entsprechende Klasse zu bauen und maximal innen Arrays (oder sinnvollere Klassen aus der Collection-API) zu nutzen.

Ich entwickle schon ziemlich lange in Java und das auch professionell und Arrays verwende ich doch extremst selten.

Wen von einer prozeduralen Sprache zu einer objektorientierten wechselt, muss man sich dran gewöhnen wirklich in Objekten, die ein Verhalten & Eigenschaften haben zu denken und weniger von Datentypen. Die ergeben sich nachgelagert um das Verhalten und die Eigenschaften umzusetzen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K rekursive Funktion mit mehreren Parametern Java Basics - Anfänger-Themen 5
E Hilfe bei rekursiver Funktion Java Basics - Anfänger-Themen 3
FunkyPhil94 Wert in einer Lambda Funktion erhöhen Java Basics - Anfänger-Themen 3
M Eine Funktion zuweisen Java Basics - Anfänger-Themen 3
V Die Funktion des neuen Schlüsselworts in Java Java Basics - Anfänger-Themen 1
M variable in anderer funktion aufrufen Java Basics - Anfänger-Themen 10
_user_q Wie eine Methode/Funktion aus einer Klasse mit Constructor aufrufen? Java Basics - Anfänger-Themen 20
nelsonmandela Problem bei Ausgabe einer Switch - Case Funktion Java Basics - Anfänger-Themen 5
W GUI - JButton ohne Funktion? Java Basics - Anfänger-Themen 24
J Rekursive Funktion und return statement Java Basics - Anfänger-Themen 3
F Wie kann ich eine Funktion schreiben, die nur in bestimmten Fällen einen Wert zurückgibt? Java Basics - Anfänger-Themen 5
R Buttons ohne Funktion Java Basics - Anfänger-Themen 2
I Generische Funktion Java Basics - Anfänger-Themen 3
E Pervasive PSQL insert funktion geht nicht Java Basics - Anfänger-Themen 9
C Java Funktion: externe Daten vom Internet einbinden Java Basics - Anfänger-Themen 2
T Log Funktion erstellen Java Basics - Anfänger-Themen 1
M Wie kann ich eine Methode aus einem Interface in eine Klasse implementieren, so dass sie ihre Funktion ausführt? Java Basics - Anfänger-Themen 7
H Den Wert einer rekursiven Funktion bestimmen Java Basics - Anfänger-Themen 5
J In main() Datei geöffnet, von anderer Funktion beschreiben Java Basics - Anfänger-Themen 3
M toDouble Funktion Java Basics - Anfänger-Themen 3
Tino1993 Ellipse über draw Funktion ohne spur wandern lassen Java Basics - Anfänger-Themen 6
X Ackermannsche Funktion Java Basics - Anfänger-Themen 32
F Arrays: Mathematische Funktion Java Basics - Anfänger-Themen 19
P Dezimal zu Hexadezimalzahl Funktion Java Basics - Anfänger-Themen 5
S Verwenden von throw Exception an der Funktion Java Basics - Anfänger-Themen 2
M Arrays in Funktion Kopieren und Bearbeiten Java Basics - Anfänger-Themen 4
J Dynamisches Array durch split()-Funktion? Java Basics - Anfänger-Themen 3
D Funktion nur 1 Rueckgabewert Java Basics - Anfänger-Themen 9
M Wie lang eine Funktion/Methode? Java Basics - Anfänger-Themen 51
N den inhalt eines array per funktion ausgeben Java Basics - Anfänger-Themen 8
R Ackermann Funktion Java Basics - Anfänger-Themen 2
B Treetable (rekursive Funktion) aufbauen von Datenbank Java Basics - Anfänger-Themen 4
D Funktion zwei Arraylisten zu verleichen ob gleich funktioniert nicht Java Basics - Anfänger-Themen 26
N Abfragen eines Textes aus einem JTextField in Java, Funktion, CardLayout, Java Basics - Anfänger-Themen 2
T Rekursion Warum bricht meine Funktion nicht ab Java Basics - Anfänger-Themen 4
N Funktion funktioniert nicht immer Java Basics - Anfänger-Themen 6
E Contain-funktion überlisten Java Basics - Anfänger-Themen 4
J Division ohne Arithmetische Funktion Java Basics - Anfänger-Themen 2
S Funktion in Klasse auslagern Java Basics - Anfänger-Themen 4
J Problem mit Boolean bei Funktion! Java Basics - Anfänger-Themen 5
S Gibt es eine Funktion, die gewissermaßen eine Reihe von instanceOf() vereinheitlicht? Java Basics - Anfänger-Themen 19
D Nullstellen einer Funktion 3. Grades mit Horner Schema Java Basics - Anfänger-Themen 6
Aprendiendo Gibt es in der JAVA-API eine Funktion, die eine Dezimalzahl in eine binäre Zahl umwandelt? Java Basics - Anfänger-Themen 8
D Funktion gibt Dimension zurück Java Basics - Anfänger-Themen 11
A Rekursion Funktion in eine Iterativ Funktion umwandeln Java Basics - Anfänger-Themen 9
T static String Variable wird nur beim ersten aufruf durch eine Funktion geändert. Java Basics - Anfänger-Themen 16
B Zugriffe in einer Klasse / Funktion Java Basics - Anfänger-Themen 9
T Koordinatensystem zeichnen - Variablen merken? Quadratische Funktion zeichnen? Java Basics - Anfänger-Themen 5
J Array innerhalb einer Funktion mehrfach iniatilisieren Java Basics - Anfänger-Themen 4
T Lambda-Funktion bei Binärbäumen Java Basics - Anfänger-Themen 13
J Wie lässt sich der Konstruktor einer Klasse einer Funktion einer Klasse nutzen. Java Basics - Anfänger-Themen 4
M Thread.sleep() Funktion Java Basics - Anfänger-Themen 1
B OOP Wie benutze ich die Main Funktion richtig? Java Basics - Anfänger-Themen 10
H Nicht Static Funktion ohne Objekt aufrufen? Java Basics - Anfänger-Themen 6
K Methoden mit den Namen accept. Welche Funktion haben diese? Java Basics - Anfänger-Themen 2
E Compare-Funktion bei eigener Klasse Java Basics - Anfänger-Themen 4
S Threads run - Funktion wird nur einmal ausgeführt. Java Basics - Anfänger-Themen 8
B Anwender soll mathematische Funktion eingeben können, Einfachster Fnktionsplotter Java Basics - Anfänger-Themen 4
R If Funktion funktioniert nicht :P Java Basics - Anfänger-Themen 3
H Funktion in Hintergrund und Vordergrund ausführen Java Basics - Anfänger-Themen 11
S Funktion die mir fuer einen String eine Zahl zwischen 0.0 und 1.0 zurueckliefert..? Java Basics - Anfänger-Themen 9
S Funktion eines Stacks Java Basics - Anfänger-Themen 4
T Integer-Objekt über Hash-Funktion in Array ablegen Java Basics - Anfänger-Themen 1
S Separate Funktion für JUnit-Test Java Basics - Anfänger-Themen 3
D Keine Funktion bei "else" Java Basics - Anfänger-Themen 5
S timer funktion mit javax panel Java Basics - Anfänger-Themen 3
T Klassen Funktion in einem Funktionsaufruf definieren Java Basics - Anfänger-Themen 3
F Funktion eines JButton in einen Vektor verlagern Java Basics - Anfänger-Themen 4
X Eval-Funktion mit Variable Java Basics - Anfänger-Themen 2
T Screenreader Funktion Java Basics - Anfänger-Themen 2
S Wertetabelle einer Funktion f : R -> R Java Basics - Anfänger-Themen 1
P Methoden suche funktion die char wert ausgibt wenn man numerischen wert und radix angibt Java Basics - Anfänger-Themen 1
1 repaint() Funktion erzeugt Flackern Java Basics - Anfänger-Themen 33
J Taschenrechner Funktion Java Basics - Anfänger-Themen 18
R if funktion ohne else - Bedingung trifft nicht zu, ausgabe nicht nachvollziehbar Java Basics - Anfänger-Themen 7
shiroX OOP Java Funktion implementieren Java Basics - Anfänger-Themen 3
O Debug-Funktion mit Slick - Kleines Problem Java Basics - Anfänger-Themen 5
F Funktion immer zur vollen Stunde? Java Basics - Anfänger-Themen 3
S ResultSet close() in funktion nich möglich. Java Basics - Anfänger-Themen 8
C Meine erste Funktion Java Basics - Anfänger-Themen 12
J Funktion um JSON per Post senden/emfangen Java Basics - Anfänger-Themen 3
G OOP Aus Objekt auf Funktion der erzeuger Klasse zugreifen? Java Basics - Anfänger-Themen 11
D Binäre Suche für Integerarray in rekursiver Funktion Java Basics - Anfänger-Themen 5
M Interface als Konstruktorparameter nutzen, um Funktion zu plotten Java Basics - Anfänger-Themen 14
NR_EIGHT Benutzereingabe in Funktion verpacken Java Basics - Anfänger-Themen 4
J Funktion definieren und ausfuehren Java Basics - Anfänger-Themen 27
D Loop Funktion für Robot Klasse Java Basics - Anfänger-Themen 5
N mathematische Funktion Java Basics - Anfänger-Themen 29
R Programm verstehen, Funktion Java Basics - Anfänger-Themen 4
C Automatisches Ausfuehren einer Funktion beim Laden eines Jar files Java Basics - Anfänger-Themen 3
O Nicht Standard Form boolesche Funktion in Standard Form parsen Java Basics - Anfänger-Themen 3
F Sleep Funktion Java Basics - Anfänger-Themen 12
S Euklid Funktion Java Basics - Anfänger-Themen 8
H Funktion mit Argumenten Java Basics - Anfänger-Themen 5
Q Random Funktion JButtons Java Basics - Anfänger-Themen 6
O Probleme mit der repaint-Funktion Java Basics - Anfänger-Themen 6
F Eine Frage über paint() Funktion Java Basics - Anfänger-Themen 2
S Parameterübergabe - identische Funktionen, aber falsche Funktion Java Basics - Anfänger-Themen 5
C Probleme mit replaceAll Funktion Java Basics - Anfänger-Themen 9
S Vector mit beliebigen Klassen an Funktion übergeben Java Basics - Anfänger-Themen 20

Ähnliche Java Themen

Neue Themen


Oben