Anzeige:
Ergebnis 1 bis 7 von 7

Thema: Void, return

  1. #1
    Registrierter Benutzer
    Registriert seit
    27.07.2010
    Beiträge
    11

    Void, return

    Code:
    static void sub(int n1, int n2, int i)
      {
        i=(n1-n2);
    Der Wert i kann das Programm irgendwie nicht speichern. Ich weiss, man könnte das void einfach weglassen und eine return Funktion einbauen. Mich würde aber trotzdem interessieren, ob es bei Java eine "Zeiger auf i-Funktion" gibt? Soviel ich weiss würde dies beispielsweise bei C mit einem * funktionieren.
    Danke vielmals!

  2. #2
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Wenn du einen Input/Output Parameter haben willst, musst du einen Referenztyp nehmen.

    Für diese Beispiel z.B java.lang.Integer

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  3. #3
    Registrierter Benutzer Avatar von John W
    Registriert seit
    29.01.2010
    Beiträge
    211
    @anda_skoa, ich mag dir ja nicht auf die Füße treten, aber einen Integer kann man nicht ändern - man muss dann eine neue Instanz zuweisen, damit lässt sich i selbst aber nicht ändern.

    Die Lösung wäre, ein Array als Zwischenspeicher zu verwenden (das wäre das, was anda_skoa über eine Integer-Instanz versucht):
    Code:
    static void sub(int n1, int n2, int[] i)
    {
        i[0]=(n1-n2);
    }
    Der Aufruf sähe z.B. so aus:
    Code:
    int i = 3;
    int[] a = {i};
    sub(5, 3, a);
    i=a[0];
    System.out.println(i);

  4. #4
    Registrierter Benutzer
    Registriert seit
    27.07.2010
    Beiträge
    11
    Vielen Dank für deine Antwort, hat super geklappt, doch eine Frage hätte ich trotzdem noch: Was passiert genau durch die Eingabe der folgenden Zeile?
    Code:
    int[] a = {i};

  5. #5
    Registrierter Benutzer Avatar von John W
    Registriert seit
    29.01.2010
    Beiträge
    211
    Es wird ein int-Array erstellt, das nur den Wert von i enthält; die Arraygröße ist somit immer 1 und kann ausgetauscht werden, es wird also nur als Container genutzt.

  6. #6
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Zitat Zitat von John W Beitrag anzeigen
    @anda_skoa, ich mag dir ja nicht auf die Füße treten, aber einen Integer kann man nicht ändern - man muss dann eine neue Instanz zuweisen, damit lässt sich i selbst aber nicht ändern.
    Du hast natürlich recht. Sieht man wieder wie lange ich schon kein Java mehr benutzt habe

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  7. #7
    Registrierter Benutzer
    Registriert seit
    27.07.2010
    Beiträge
    11
    Danke vielmals!

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •