Hallo werte Java Experten,
da ich nicht so häufig programmiere, stolpere ich sehr schnell über scheinbar kleine Probleme. So auch bei diesem
Programm:
Ausgabe:
Was macht das Programm? Es sollen einfach nur die Binär-Werte von X und Y getauscht werden. Dies geschieht aber leider nur innerhalb der interlace_swap Funktion (überprüft mit einem einfachen System.out.prinln der Werte innerhalb der Funktion). Jedoch ändern sich die Werte außerhalb / nach Aufruf der interlace_swap Funktion nicht.
Und ich möchte gerne wissen:
a) wieso ist das so? und
b) wie kann ich das beheben, so dass die Werte durch die Funktion auch wirklich geändert werden?
Schon mal im Voraus Danke für eure Hilfe ;-)
da ich nicht so häufig programmiere, stolpere ich sehr schnell über scheinbar kleine Probleme. So auch bei diesem
Programm:
package test;
/**
*
*/
public class test{
/*
* Pointer-Tausch-Funktion
*/
public static void inplace_swap (int pointer_x, int pointer_y){
pointer_x = pointer_x ^ pointer_y; //Schritt 1
pointer_y = pointer_x ^ pointer_y; //Schritt 2
pointer_x = pointer_x ^ pointer_y; //Schritt 3
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
int x = 0b0101;
int y = 0b0011;
System.out.println("Pointer vor dem Tausch:");
System.out.println("X: " + Integer.toBinaryString(x));
System.out.println("Y: " + Integer.toBinaryString(y));
inplace_swap(x,y);
System.out.println();
System.out.println("Pointer nach dem Tausch:");
System.out.println("X: " + Integer.toBinaryString(x));
System.out.println("Y: " + Integer.toBinaryString(y));
}
}
Ausgabe:
Pointer vor dem Tausch:
X: 101
Y: 11
Pointer nach dem Tausch:
X: 101
Y: 11
Was macht das Programm? Es sollen einfach nur die Binär-Werte von X und Y getauscht werden. Dies geschieht aber leider nur innerhalb der interlace_swap Funktion (überprüft mit einem einfachen System.out.prinln der Werte innerhalb der Funktion). Jedoch ändern sich die Werte außerhalb / nach Aufruf der interlace_swap Funktion nicht.
Und ich möchte gerne wissen:
a) wieso ist das so? und
b) wie kann ich das beheben, so dass die Werte durch die Funktion auch wirklich geändert werden?
Schon mal im Voraus Danke für eure Hilfe ;-)