Inhalte zweier Variablen tauschen

Status
Nicht offen für weitere Antworten.
Hallo zusammen,

ich studiere Info im ersten Semester und komme bisher auch sehr gut mit, da ich mich vorher schon recht gut mit Java ausgekannt hab. Wir bekommen also wöchentlich Übungszettel, und auf diesem steht eine Frage, zu der mir nicht so viel einfällt:

Wie kann man die Inhalte zweier Variablen tauschen, ohne eine dritte Variable zu Hilfe zu nehmen? Nennen sie Bedingungen und Ablauf sowie mindestens zwei Möglichkeiten.

Also eine hätte ich:
Tausch int <-> int (oder ähnliches, also char und bei flot etc. müsste das mit Einschränkungen auch gehen).
Code:
int a = 7;   //müssten so circa in der Hälfte des Wertebereichs für ints liegen, a und b
int b = 8;

a += b;   // a = 15
b -= a;    // b = -7
a += b;   // a = 8
b *= -1;   // b = 7
Das würde funktionieren. Hat jemand noch Anregungen oder andere Ideen, die er mir auch erklären kann? Es muss nicht auf sowas wie Effizienz geachtet werden, sondern es geht erstmal nur um die Idee an sich.

Vielen Dank für eure Hilfe / Mühe :),
MfG,
Tim
 

Student

Top Contributor
mach 'a' zu einem String. hänge b an. weise b das erste zeichen von 'a' zu.

;-)

ungetestet.
 
Student hat gesagt.:
mach 'a' zu einem String. hänge b an. weise b das erste zeichen von 'a' zu.

;-)

ungetestet.

:D
Zwei Probleme:
1. wir kennen offiziell noch keine Strings, also ist diese Möglichkeit nicht in der "Lösungsmenge" ;-)
2. Du brauchst doch wohl irgendwie eine Variable die sich den String merkt, sonst kriegst du das net gebacken :).
Aber trotzdem Danke für deine Antwort!
 

dotlens

Top Contributor
Code:
a = 6;
b = 8;

a = a * b; // a = 48
b = a / b; // b = 6
a = a / b; // a = 8

gefällt mir, diese aufgabe :D
auch wenn sie nicht viel sinn macht ;)
 

Student

Top Contributor
TimWischmeier hat gesagt.:
2. Du brauchst doch wohl irgendwie eine Variable die sich den String merkt, sonst kriegst du das net gebacken!
wieso?

es war nicht davon die rede, dass die variable nicht den datentyp 'wechseln' darf ^^
 

Bleiglanz

Gesperrter Benutzer
Code:
// funzt für double,float,int,long
if(a<=b)
{
    a=Math.max(a,b);b=Math.min(a,b);
}
else
{
    b=Math.min(a,b);a=Math.max(a,b);
}
Meinst du nur primitive Datentypen oder auch Object's?
 

Sky

Top Contributor
Bleiglanz hat gesagt.:
Code:
// funzt für double,float,int,long
if(a<=b)
{
    a=Math.max(a,b);b=Math.min(a,b);
}
else
{
    b=Math.min(a,b);a=Math.max(a,b);
}
Meinst du nur primitive Datentypen oder auch Object's?

Ich glaube nicht, dass deine zuverlässig Lösung geht.

Denn wenn z.B. a=5 und b=7, dann wird durch 'a=Math.max(a,b)' der Variablen a der Wert '7' zugewiesen. Das Ergebnis von 'b=Math.min(a,b);' ist dann auch gleich '7', weil hier aus '7' und '7' das Minimum ermittelt werden soll.
 

pogo

Bekanntes Mitglied
Code:
a = 7;
b = 8;

a = a+b;  //a = 7+8 = 15
b = a-b;  //b = 15-8 = 7
a = a-b;  //a = 15-7 = 8
fertig
 

Bleiglanz

Gesperrter Benutzer
jo, das ist wirklich totaler käse :)


Muss wohl
Code:
if(a<=b)
a=Math.max(b=Math.min(a,b),a);
heissen, geht dass denn wenigstens?
 

Sky

Top Contributor
Bleiglanz hat gesagt.:
jo, das ist wirklich totaler käse :)


Muss wohl
Code:
if(a<=b)
a=Math.max(b=Math.min(a,b),a);
heissen, geht dass denn wenigstens?

Auch das dürfte nicht gehen :
- a ist kleiner als b
- das Min. aus a und b ist somit a (dies wird b zugewiesen)
- dann wird a und b verglichen (beide haben den Min.-Wert angenommen)
- der Max-Wert aus 'b=Math.min(a,b),a' ist immer gleich a für a < b

Den Fall a == b (wird auch über das if geregelt) habe ich nicht betrachtet, da es da nix zum Tauschen gibt.
 

Reality

Top Contributor
Code:
public class  Test{
       public  static  void main(String args[]) {
               int a = 8;
               int b = 0;
               
               int tmp = 0;
               
               if((a | b) != a && (a & b) != a){
                     tmp = (a | b) ^ b;
                     a = (b | a) ^ a;
                     b = tmp;
               }
               
               else if((a & b) != a){
                tmp = (a | b);
                b = tmp;
                a = (b | a) ^ a;
               }
               
               else{
                tmp = (a & b);
                a = (a | b);
                b = tmp;
               }


               
               System.out.println(a);
               System.out.println(b);

       }


}

EDIT: Hab nun doch eine dritte Variable genommen. ;)
Ich bin mir aber ziemlich sicher, dass es eine gute Methode mit nur 2 Variablen mit solchen Verknüpfungen gibt.

Liebe Grüße
Reality
 

pogo

Bekanntes Mitglied
nimm doch einfach die, die ich weiter oben schon geschrieben hab. die tauscht ganz einfach die 2 variablen
 

Bleiglanz

Gesperrter Benutzer
mein Hirn! hilfe! kann nicht mehr denken
Code:
if(a<=b)
{
    a=Math.max(b,b=Math.min(a,b));
}
else
{
    b=Math.max(a,a=Math.min(a,b));
}
 

Sky

Top Contributor
Bleiglanz hat gesagt.:
mein Hirn! hilfe! kann nicht mehr denken
Code:
if(a<=b)
{
    a=Math.max(b,b=Math.min(a,b));
}
else
{
    b=Math.max(a,a=Math.min(a,b));
}

:toll: So stimmt es :toll:
 
:toll: Vielen Dank für Eure Hilfe bis hierhin!!! :toll:

damits übersichtlich bleibt, fasse ich noch einmal zusammen:
Getauscht werden sollen primitive Datentypen, keine Objekte. Also auch keine Strings. Methoden aus Math dürfen benutzt werden, sonst keine. Bisher sind 3 Möglichkeiten gefunden worden:

1.
Code:
int a = 7;
int b = 8;

a += b;   // a = 15
b -= a;    // b = -7
a += b;   // a = 8
b *= -1;   // b = 7

2. (dotlens)
Code:
int a = 6;
int b = 8;

a = a * b; // a = 48
b = a / b; // b = 6
a = a / b; // a = 8

3. (Bleiglanz)
Code:
if(a<=b)
{
    a=Math.max(b,b=Math.min(a,b));
}
else
{
    b=Math.max(a,a=Math.min(a,b));
}

Ich muss sagen, vor allem die 3. Methode gefällt mir, die ist schön trickreich. Gibts noch mehr kreative Leute hier :)?
 

Bleiglanz

Gesperrter Benutzer
Code:
a = b + 0*(b=a); // von links nach rechts ausgewertet
leider wieder nur für zahlen :)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Inhalte zweier Vektoren vergleichen Java Basics - Anfänger-Themen 3
S Inhalte aus Array vergleichen und Max ausgeben Java Basics - Anfänger-Themen 3
J Inhalte von zwei Arrays vertauschen?! Java Basics - Anfänger-Themen 6
C Array auf Null-Inhalte prüfen Java Basics - Anfänger-Themen 9
M Die Inhalte eines Arrays mit der Methode Arrays.toString ausgeben Java Basics - Anfänger-Themen 4
P Interface Variablen-Inhalte werden nicht übergeben Java Basics - Anfänger-Themen 3
D Erste Schritte JFrame Inhalte werden nicht angezeigt Java Basics - Anfänger-Themen 8
U Tabelle ändern und die Inhalte speichern Java Basics - Anfänger-Themen 9
N Bestimmte Inhalte aus Datei lesen Java Basics - Anfänger-Themen 11
L Datentypen Array Inhalte vergleichen Java Basics - Anfänger-Themen 6
L Eine ArrayList auf gleiche Inhalte prüfen Java Basics - Anfänger-Themen 10
N Array inhalte verschieben Java Basics - Anfänger-Themen 12
I Im JFrame Inhalte verändern per Methode aus anderer Class Java Basics - Anfänger-Themen 5
MiMa Null Inhalte in Variablen Java Basics - Anfänger-Themen 28
C Dynamische (AJAX) Inhalte einer Webseite mittels Java auslesen Java Basics - Anfänger-Themen 2
C Input/Output Inhalte von ArrayList und JList in Datei schreiben Java Basics - Anfänger-Themen 5
J Regex um Inhalte zwischen Tags zu ignorieren Java Basics - Anfänger-Themen 2
M Aus String bestimmte Inhalte auslesen Java Basics - Anfänger-Themen 8
E Array Inhalte zählen Java Basics - Anfänger-Themen 6
N Alle Inhalte aus Bean in einer anderen Klasse ausgeben Java Basics - Anfänger-Themen 2
D Datentypen String Inhalte ersetzen Java Basics - Anfänger-Themen 8
F Hilfe! JList Inhalte vertauschen Java Basics - Anfänger-Themen 2
M Zwei Objekt Inhalte vergleichen Java Basics - Anfänger-Themen 22
M zwei array inhalte vergleichen Java Basics - Anfänger-Themen 3
G Inhalte eines Arrays mischen Java Basics - Anfänger-Themen 3
R String Arrays Inhalte vergleichen Java Basics - Anfänger-Themen 4
K Inhalte aus einem Java-Applet-Fenster auslesen Java Basics - Anfänger-Themen 2
N aus HTML einzelne Inhalte (z.B. Tabelleninhalte) auslesen Java Basics - Anfänger-Themen 10
G Inhalte in einer Properties Datei setzen? Java Basics - Anfänger-Themen 14
F mehrer Textdateien Inhalte in eine TXT Datei Java Basics - Anfänger-Themen 16
P Inhalte aus Methoden in String Arrays bringen Java Basics - Anfänger-Themen 4
D Inhalte von Stacks miteinander multiplizieren Java Basics - Anfänger-Themen 4
O nicht-statische Inhalte auf statische Inhalte verweisen Java Basics - Anfänger-Themen 19
G .TXT-Datei einlesen, Inhalte durch TABs getrennt Java Basics - Anfänger-Themen 2
M Inhalte eines Vectors alphabetisch ordnen Java Basics - Anfänger-Themen 8
G File auslesen u. Inhalte als table in neuem file darstellen Java Basics - Anfänger-Themen 6
N Zugriff auf Vaiablen inhalte der superklasse Java Basics - Anfänger-Themen 7
Fats Waller Compiler-Fehler Kann ich einen String und die Summe zweier Char Werte mittels der println Anweisung ausgeben Java Basics - Anfänger-Themen 4
C Kollision zweier Rechtecke, Schnittpunkte bestimmen Java Basics - Anfänger-Themen 25
C alle möglichen Kombinationen zweier Ziffern auf drei / vier / und 'n" Stellen Java Basics - Anfänger-Themen 11
D Interaktion zweier Objekte Java Basics - Anfänger-Themen 5
J Transformation zweier Integer in ein Double Java Basics - Anfänger-Themen 26
H Gemeinsame Schnittmenge zweier Arrays ausgeben Java Basics - Anfänger-Themen 12
F Erstellen zweier Objekte mit dem selben Inhalt Java Basics - Anfänger-Themen 1
K Datentypen Einträge zweier Matrizen vergleichen Java Basics - Anfänger-Themen 4
K Erste Schritte Berechnung der Summe zweier Arrays Java Basics - Anfänger-Themen 15
S Vergleich zweier ArrayLists mit Ausgabe an dritte ArrayList Java Basics - Anfänger-Themen 5
I Schnittpunkt zweier Geraden berechnen Java Basics - Anfänger-Themen 25
G Klassen Vergleich zweier Klassen Java Basics - Anfänger-Themen 23
S Implementieren zweier Klassen Java Basics - Anfänger-Themen 5
P Ungerade Zahlen ausgeben lassen zwischen Spannweite zweier eingegeben zahlen Java Basics - Anfänger-Themen 6
L Vergleich zweier Variablen, mit Abweichung Java Basics - Anfänger-Themen 3
N Methoden Methode zum Vergleich zweier Geburtstage Java Basics - Anfänger-Themen 5
K Multiplikation zweier Matrizen Java Basics - Anfänger-Themen 23
D Zusammenfassen zweier Programme Java Basics - Anfänger-Themen 3
B Kreuzprodukt zweier Vektoren (Erste Java Aufgabe - Hilfestellungen und Tips erwünscht) Java Basics - Anfänger-Themen 4
M Vergleich zweier Array Stellen mit equals/NullpointerException Java Basics - Anfänger-Themen 9
L BufferdImage schwarzes Bild nach zusammenfügen zweier Bilder Java Basics - Anfänger-Themen 8
N Vergleich zweier String Arrays scheitert Java Basics - Anfänger-Themen 3
C Proportionale Abnahme zweier Werte Java Basics - Anfänger-Themen 4
O ArrayListe sortieren anhand zweier Parameter Java Basics - Anfänger-Themen 4
T Programm, das die Differenz zweier Daten ausgibt Java Basics - Anfänger-Themen 4
S Ermittlung des GGTs zweier Werte Java Basics - Anfänger-Themen 5
Y Erste Schritte Verknüpfung zweier JAVA-Codes Java Basics - Anfänger-Themen 8
A Methoden Gedanken Anstöße zur Realisierung zweier Ideen (Grafisch Sekunden zählen und Frameaufteilung) Java Basics - Anfänger-Themen 18
I Einlese Abfrage zweier Variablen in einem Fenster Java Basics - Anfänger-Themen 6
A Durchschnitt zweier Mengen berechnen Java Basics - Anfänger-Themen 3
G Kombination zweier Befehle (Preis festlegen & Rabatt berechnen) Java Basics - Anfänger-Themen 3
W Methoden größe zweier tiere vergleichen Java Basics - Anfänger-Themen 15
K Schnitt zweier Ebenen ergibt Gerade Java Basics - Anfänger-Themen 10
L vergleich zweier texte Java Basics - Anfänger-Themen 18
B Vergleich zweier Objekte durch "Hashfunktion" Java Basics - Anfänger-Themen 12
J Addition zweier Zahlen Java Basics - Anfänger-Themen 9
J Dimensionen zweier Arrays vergleichen Java Basics - Anfänger-Themen 4
U Größenvergleich / Dimensionsvergleich zweier Matrizen Java Basics - Anfänger-Themen 2
N Datenaustausch zweier rechner Java Basics - Anfänger-Themen 4
turmaline Gleicheit zweier Listen Java Basics - Anfänger-Themen 12
S Print Methode zweier "Classes" kombinieren Java Basics - Anfänger-Themen 2
C Dateiinhalt zweier Dateien auf Gleichheit prüfen Java Basics - Anfänger-Themen 3
S Addition zweier 32 Byte langer ByteArrays Java Basics - Anfänger-Themen 5
W Unterschiede zweier Dateien herauslesen Java Basics - Anfänger-Themen 7
P Unterschiede zweier System.in Varianten Java Basics - Anfänger-Themen 3
I Abhängigkeiten zweier Klassen Java Basics - Anfänger-Themen 25
G Vergleich zweier Arrays Java Basics - Anfänger-Themen 8
D Eine Nachkommazahl zweier Double vergleichen Java Basics - Anfänger-Themen 4
N sortieren zweier abhängiger array listen Java Basics - Anfänger-Themen 12
S Addieren zweier Arrays Java Basics - Anfänger-Themen 10
T ermittlung des minimus zweier eingegebener werte Java Basics - Anfänger-Themen 7
G größere zweier zahlen ermitteln und ausgeben Java Basics - Anfänger-Themen 6
G Summe zweier doubles falsch? Java Basics - Anfänger-Themen 10
I Kollision zweier Rechtecke Java Basics - Anfänger-Themen 9
H Genauigkeit beim Multiplizieren zweier Zahlen Java Basics - Anfänger-Themen 2
K Vergleich zweier Objekte in einer HashMap Java Basics - Anfänger-Themen 6
B Zusammenspiel zweier JFrames Java Basics - Anfänger-Themen 2
A Schnitt zweier Rechtecke ermitteln Java Basics - Anfänger-Themen 2
N Vergleich zweier Elemente verschiedener Vectoren Java Basics - Anfänger-Themen 2
G Vergleich zweier 'long'-Werte. Problem! Java Basics - Anfänger-Themen 6
U Maximum zweier Zahlen ermitteln Java Basics - Anfänger-Themen 7
N Den Inhalt zweier Strings (Zahlen) addieren Java Basics - Anfänger-Themen 5
S maximum zweier Zahlen Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben