carookee - group communication for you
Home / JavaForum / Beginner
Infos   |   Features   |   Gold-Edition   |   Kundenservice   
java
  Übersicht
  Forum
Beginner
Java allgemein
JDBC
JNI
Networking
Online-Ressourcen
Swing + AWT
XML
Meckerecke
  Mitglieder
LOGIN





· Passwort vergessen
· Kostenlos anmelden
  Information
  Demo
  Features
  Im Vergleich
  Anmeldung
SUCHE
Beiträge, Foren oder Verfasser finden:
  Kundenservice
  Impressum
  Datenschutz
  AGB
Status
4.525 User online
0 User eingeloggt
 

Beiträge
   Antworten     Neuer Beitrag    

Beitrag 97 von 2963 (3%) |<   <   >   >|

Autor DeaconFrost
Datum 03.04.06, 18:06
Betreff Re: Zählen von Zuweisungen bei Bubble Sort


Hallo,

Ich sehe da gleich 2 Gründe, warum 0 ausgegeben wird:

1.) Beim Aufruf einer Methode werden die Parameter in Java immer kopiert (Fachbegriff: call by value), d.h. jede Methode arbeitet mit eigenen Kopien der Werte. Es ist also ganz egal, was bubbleSort() tut. Die Variablen zuw und vergl in main() werden sich nie ändern, da sie ausschließlich main() "gehören" und durch keine andere Methode verändert werden können.

2.) Zuweisungen wie "vergl = vergl++;" ändern den Wert der Variable NICHT. Das ist im Übrigen ziemlich trickreich, weil die Operatoren ++ und -- eine Doppelfunktion haben.
Warum? Beide Arten erhöhen bzw. erniedrigen die Variable um 1 UND liefern ein Resultat zurück, jedoch ein Unterschiedliches!
Präinkrement (++v) und Prädekrement (--v) liefern das Endergebnis, während Postinkrement (v++) und Postdekrement (v--) den Wert VOR der Operation zurückliefern.

z.B.:

v = 5;
System.out.println(++v); // v wird auf 6 erhöht UND das Endergebnis ausgegeben (also 6)
System.out.println(--v); // v wird auf 5 vermindert UND ausgegeben wird 5 (das Endergebnis)
System.out.println(v++); // v wird wieder auf 6 erhöht, ABER der Wert VOR der Änderung wird ausgegeben (also 5!)
System.out.println(v--); // v wird wieder auf 5 vermindert, ABER v hatte zuvor den Wert 6, was auch ausgegeben wird!


Wie kannst Du dein Programm nun zum laufen bringen:

Ad 1) Da beide Methoden der selben Klasse angehören, kannst Du die Variablen vergl und zuw als Variablen der Klasse definieren. Beide Methoden haben dann darauf Zugriff.
Also:
public class BubbleSort {
    static int zuw = 0;
    static int vergl = 0;
}

Das Schlüsselwort static ist nötig, damit die static-Methoden main() und bubbleSort() darauf zugreifen können. Damit gehören die beiden Variablen zur Klasse BubbleSort, nicht den Instanzen (=Objekten) von der Klasse BubbleSort (eben genau, wie bei den Methoden).

Ad 2)
Um den Wert der Variablen vergl und zuw zu erhöhen, brauchst Du schlicht und ergreifend keine Zuweisung.
Das heisst

vergl++;
++zuw;


genügt in diesem Fall. In diesem Fall ist es auch egal, ob ++ nun davor (prä) oder danach (post) steht, weil das Endergebnis nirgendwohin zugewiesen (ignoriert) wird.

Ich hoffe Dir geholfen zu haben und schicke

Liebe Grüße,

Deacon Frost

[editiert: 03.04.06, 18:09 von ]


Diskussionsverlauf:
Zählen von Zuweisungen bei Bubble Sort
    Re: Zählen von Zuweisungen bei Bubble Sort
        Re: Zählen von Zuweisungen bei Bubble Sort

 Auf diesen Beitrag antworten
 Neuen Beitrag verfassen


|<   <   >   >|

                                                                                                                                                                                                                           

Impressum  · Datenschutz  · AGB  · Infos  · Presse
Ein modernes Forum: teamturn.com