1. #1
    Avatar von aquastar
    Registriert seit
    08.11.2011
    Beiträge
    1.024
    Thanked 1.110 Times in 580 Posts

    Standard Methoden Parameterrückgabe

    Hey!

    Ich hab mal 'ne Frage und zwar wie sieht es mit der Parameterrückgabe aus einer Methode von Integern aus? Ich weiß, dass man Objekte zurückgeben kann, in anderen Sprachen löst man das über sogenanntes 'Call By Reference', was es in Java nicht gibt.

    Ich geb euch ein Beispiel, was ich meine:
    PHP-Code:
    public class beispiel{
    public static 
    void main(String args[]){

    int a 5;
    System.out.println(a); // Ausgabe = 5
    plus(a);
    System.out.println(a); // Ausgabe ist nicht 10, noch immer 5
    }
    private static 
    void plus(int a){

    a+5;
    }

    Ich hoffe ich konnte mit dem kleinen schnell geschriebenen Beispiel euch verdeutlichen, was ich meine. So, da diese Rückgabe von z.B Integern nicht geht, wollte ich fragen, ob man das anders lösen kann.

    Gruß,
    aquastar
    Geändert von aquastar (06.06.2012 um 15:04 Uhr) Grund: Jetzt sollte alles stimmen.

  2. #2

    Registriert seit
    19.11.2011
    Beiträge
    496
    Thanked 412 Times in 268 Posts

    Standard AW: Methoden Parameterrückgabe

    Code:
    int a = 5;
    a = plus(a);
    ...
    int plus(int a) {
      return a + 5;
    }
    Ist aber nicht schön, und kann auch vermieden werden.
    In welchen Zusammenhang brauchst das?

  3. #3
    Avatar von aquastar
    Registriert seit
    08.11.2011
    Beiträge
    1.024
    Thanked 1.110 Times in 580 Posts

    Standard AW: Methoden Parameterrückgabe

    Spoiler:
    PHP-Code:
    import java.util.*;

    public class 
    Sort{
      public static 
    void main(String args[]){
       
    Scanner s = new Scanner(System.in);
       
    int anzahlElementetempzahlenFeld[], a=0b=0;
       
    double zstVorherzstNachher;
       
    boolean tausch false;

       
    System.out.println("Wie viele zahlen willst du eingeben?");
       
    anzahlElemente s.nextInt();
       
    zahlenFeld = new int[anzahlElemente];

       
    System.out.println("-----------------");
       
    System.out.println("Gib deine Zahlen ein:");

       for(
    int o 0anzahlElementeo++){
         
    System.out.println(String.format("Gib deine %s. Zahl ein"o+1));
         
    zahlenFeld[o] = s.nextInt();
       }
        
    System.out.println("-----------------");
      
    zstVorher System.currentTimeMillis();
      
    Sort(zahlenFeldab);

      
    zstNachher System.currentTimeMillis();
      
    System.out.println("-----------------");
      
    System.out.println(String.format("Die While Schleife wurde %s Mal wiederholt"b));
      
    System.out.println(String.format("Der Tausch wurde %s Mal wiederholt"a));
      
    System.out.println("Zeit benötigt: " + ((zstNachher zstVorher)) + " millisec");


      }
      private static 
    void Sort(int[] zahlenFeldint aint b){
      
      
    boolean tausch false;
      
    int tempa=0b=0i;
      
    zahlenFeld.length -1;
      
      do{
         for(
    int j 1j<=(zahlenFeld.length-1); j++){
           if(
    zahlenFeld[j-1] > zahlenFeld[j]){
             
    temp zahlenFeld[j];
             
    zahlenFeld[j] = zahlenFeld[j-1];
             
    zahlenFeld[j-1] = temp;
             
    tausch true;
             
    a++;

           }
         }
         
    b++;
         
    i--;
      }while((
    0) && (tausch true));
      
        for(
    int z 0zahlenFeld.lengthz++){
        
    System.out.println(String.format("%s. Zahl: %s", (z+1), zahlenFeld[z]));
      }
      }



    So, das ist der komplette Code.
    Und nun ist es so, dass in der Zeile 'Sort(zahlenFeld, a, b)' die beiden Werte für a und b nicht zurückgegeben werden, da ich ausgeben will, wie oft getauscht wurde und wie oft die Schleife durchgegangen wurde.

    Wie kann ich das nun so machen, dass in der Methode das gezählt wird und mir dann in die Mainmethode zurückgegeben wird?

    Danke schonmal (:

  4. #4
    Avatar von DMW007
    Registriert seit
    15.11.2011
    Beiträge
    6.217
    Thanked 9.133 Times in 3.007 Posts
    Blog Entries
    5

    Standard AW: Methoden Parameterrückgabe

    Eine Methode kann immer nur eine Variable zurückgeben.
    Wenn mehrere Werte zurückgegeben werden sollen, gibt man einen Array zurück oder nutzt Pointer.


  5. The Following User Says Thank You to DMW007 For This Useful Post:

    aquastar (06.06.2012)

  6. #5
    Avatar von aquastar
    Registriert seit
    08.11.2011
    Beiträge
    1.024
    Thanked 1.110 Times in 580 Posts

    Standard AW: Methoden Parameterrückgabe

    Ich versteh es dennoch nicht ganz, wie ich a und b zurückgeben kann. Dass ich nur eine Variable zurückgeben kann, ist mir jetzt klar. Aber das tu ich doch schon im Parameter, oder nicht?
    Und wie bekomm ich a und b zurück in meine Mainmethode?

  7. #6

    Registriert seit
    19.11.2011
    Beiträge
    496
    Thanked 412 Times in 268 Posts

    Standard AW: Methoden Parameterrückgabe

    Die Parameter werden alle samt Call-by-Value übergeben. Deshalb sind Parameterveränderungen nur lokal wirksam.
    Du könntest deine a- und b-Variable als Instanzvariablen deklarieren. Deine Methode könnte auf diese zugreifen und die Veränderungen würden nach Verlassen der Methode wirksam bleiben.

  8. The Following User Says Thank You to Mr. White For This Useful Post:

    aquastar (06.06.2012)

  9. #7
    Avatar von aquastar
    Registriert seit
    08.11.2011
    Beiträge
    1.024
    Thanked 1.110 Times in 580 Posts

    Standard AW: Methoden Parameterrückgabe

    Und wie würde das dann an meinem Beispiel aussehen?

  10. #8

    Registriert seit
    19.11.2011
    Beiträge
    496
    Thanked 412 Times in 268 Posts

    Standard AW: Methoden Parameterrückgabe

    Code:
    public class Test {
      private int a = 0, b = 0;
     
      @Override 
      public String toString() {
        return "a=" + a + ", b=" + b;
      }
    
      public void doSomething() {
        a = b = 10;
      }
    
      public static void main(String... args) {
        Test t = new Test();
        System.out.println(t.toString());  // a=0, b=0
        t.doSomething();
        System.out.println(t.toString()); // a=10, b=10
      }
    }

  11. #9
    Avatar von aquastar
    Registriert seit
    08.11.2011
    Beiträge
    1.024
    Thanked 1.110 Times in 580 Posts

    Standard AW: Methoden Parameterrückgabe

    Hab die Variablen dann doch als globale Variablen verwendet, also wurde mir erklärt.
    Danke trotzdem.

    Ich schließe hier dann mal.

Ähnliche Themen

  1. [Methoden & Hilfe] Liebe, Selbstbewusstsein & co
    Von WurstEsser im Forum Zwischenmenschliches
    Antworten: 20
    Letzter Beitrag: 12.08.2014, 08:00
  2. Methoden um Browser-Accounts zu lesen?
    Von JumP-StyLe im Forum OffTopic
    Antworten: 5
    Letzter Beitrag: 03.06.2012, 19:50
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.