VergleicheZahlen

HeiTim

Mitglied
Ich hätte mal eine frage ich hänge grad an einer Aufgabe und vielleicht kann mir ja hier jemand weiter helfen.
Die Aufgabenstellung lautet:

Schreiben Sie eine Java-Methode vergleicheZahlen(), die für Variablen x, y und z prüft, ob

A: die Variablen alle den gleichen Wert haben,
B: die Variablen alle unterschiedliche Werte haben,
C: mindestens zwei Variablen den gleich Wert haben.

Die drei Variablen sind vom Typ int und sollen an die Methode übergeben werden. Nutzen Sie Verzweigungen und geben Sie die erfüllte Bedingungen ("A", "B" oder "C") auf die Konsole aus. Wenn alle Variablen den gleichen Wert haben, soll nicht zusätzlich ausgegeben werden, dass mindestens zwei den gleichen Wert haben.
Danke im voraus.
 
K

kneitzel

Gast
Kannst Du denn die Bedingungen für A, B und C nennen? Was muss denn im Fall A gelten?

Und den Aufbau einer if Anweisung kannst Du Dir noch einmal anschauen um zu sehen, wie Du da bei Zutreffen einer Bedingung etwas machen kannst.
 

HeiTim

Mitglied
ich hab deine frage nicht ganz verstanden.
ich hab den Aufbau der if-methode mir natürlich schon angeschaut jedoch Weiß ich nicht wie es mit drei variablen funktionieren soll ich hab es so angefangen aber weiter komm ich nicht und bin mir auch nicht sicher ob es den richtig ist den sobald ich das in meinem Test Programm einfüge funktioniert es nicht und mein Testprogramm ist nicht Eclipse sondern eine Website wo die Fähigkeiten getestet werden und dort ist es noch mal ansträngender :

public static void main(String[]args){

int x=3;
int y=1;
int z=2;
if (x==y && x==z && y==z) {
System.out.print('A');
}
else {
System.out.print('B');
}
}

}
 

HeiTim

Mitglied
Kannst Du denn die Bedingungen für A, B und C nennen? Was muss denn im Fall A gelten?

Und den Aufbau einer if Anweisung kannst Du Dir noch einmal anschauen um zu sehen, wie Du da bei Zutreffen einer Bedingung etwas machen kannst.
ich hab deine frage nicht ganz verstanden.
ich hab den Aufbau der if-methode mir natürlich schon angeschaut jedoch Weiß ich nicht wie es mit drei variablen funktionieren soll ich hab es so angefangen aber weiter komm ich nicht und bin mir auch nicht sicher ob es den richtig ist den sobald ich das in meinem Test Programm einfüge funktioniert es nicht und mein Testprogramm ist nicht Eclipse sondern eine Website wo die Fähigkeiten getestet werden und dort ist es noch mal ansträngender :

public static void main(String[]args){

int x=3;
int y=1;
int z=2;
if (x==y && x==z && y==z) {
System.out.print('A');
}
else {
System.out.print('B');
}
}

}
 

HeiTim

Mitglied
Wenn x==y und y==z --> x == z
also genügt
Java:
if( x == y && y == z )
    ..
also mein letzter stand ist so:

public class vergleicheZahlen {

public static void main(String[]args){

int x=3;
int y=1;
int z=2;
if (x==y && x==z && y==z) {
System.out.print("A");
}
if (x!=y && x!=z && y!=z) {
System.out.print("B");
}
if (x>=y && x>=z && y>=z) {
System.out.println("C");
}
}
}

aber es geht so anscheinend nicht auf. Ich habe nun deinen Ansatz verstanden denke ich nur Weiß ich nicht ob meine dritte if-schleife richtig ist bzw ob ich überhaupt 3 if schleifen so ausführen darf.
LG
 
K

kneitzel

Gast
Du hattest im ersten Post ein if / else. Wenn Du im ersten if warst, dann sind die weiteren Prüfungen nicht mehr notwendig. Somit müssen die nur im else Zweig statt finden.

Und ehe Du etwas schreibst wie:
Java:
if (...) {
    
} else {
    if (...) {
        
    } else {
        
    }
}
gleich der Hinweis, dass dies üblicherweise so geschrieben wird:
Java:
if (...) {
    
} else if (...) {
    
} else {
    
}

Aber damit hast Du das handwerkliche Grundgerüst. Deine Abfragen kannst Du dann auch entsprechend bauen (Hast Du ja schon - die ersten beiden Bedingungen bei Dir sind so erst einmal korrekt)

Also Aufbau wäre dann:
Sind alle drei Zahlen gleich dann ...
sonst Sind alle Zahlen unterschiedlich dann ...
sonst ...

Also die Hinweise bedenken, die Du schon bekommen hast:
Wenn x==y und x == z, dann muss man nicht mehr prüfen, ob y == z ist. Das ist ja schon der Fall.
Hier kommt etwas ähnliches: Wenn die drei Zahlen nicht alle gleich sind und nicht alle unterschiedlich sind, dann ist klar: zwei Zahlen sind gleich. Das muss also nicht mehr geprüft werden und am Ende reicht ein einfaches else.
 

Neumi5694

Top Contributor
Es juckt mich ja in den Fingern die fertige Lösung zu präsentieren :D

Mit der geschachtelten Abfrage, wie sie Kneitzel andeutet ist das ganz einfach.
Prüfe als erstes NUR, ob x gleich y ist. In diesem Abschnitt prüfst du dann den Rest (entweder ist y gleich z oder eben nicht), im Else Fall prüfst du alles, was x != y voraussetzt (z kann hier gleich einem der beiden Werte sein oder verschieden von beiden).
 

HeiTim

Mitglied
Ich musste das wohl doch so bearbeiten:

public static void vergleicheZahlen(int x,int y,int z){

if ( x==y && y==z && x==z) {
System.out.println("A");
}
else if (x!=y && x!=z && y!=z) {
System.out.println("B");
}
if (x>=y && x>=z && y>=z) {
System.out.println("C");
}
}

jedoch steht unten was erwartet wurde und erhalten wird:


  1. Test
    ErwartetErhalten
    vergleicheZahlen(1,2,3); BB
    vergleicheZahlen(1,2,1); C
    vergleicheZahlen(2,2,2); AA C
    vergleicheZahlen(2,2,1); CC
Also das erste und letzte hab ich richtig gemacht nun weiss ich nicht warum er bei der zweiten nix ausgibt und bei dem dritten AC ausgibt wie kann ich dies ändern?
 
Zuletzt bearbeitet:
K

kneitzel

Gast
Also diese Bedingung: if (x>=y && x>=z && y>=z) verstehe ich nicht. Es geht doch um:
mindestens zwei Variablen den gleich Wert haben.
Und daher ist wichtig, die Logik zu verstehen:

Hier ist also wichtig, dass halt gesagt wurde:
Wenn alle Variablen den gleichen Wert haben, soll nicht zusätzlich ausgegeben werden, dass mindestens zwei den gleichen Wert haben.
Es ist dadurch entweder A, B oder C. Andere Fälle kann es nicht geben!

Daher meine ganz deutliche Meinung: Schau Dir an, was ich zu if / else if / else geschrieben habe und versuch diese Bedeutung nachzuvollziehen! Dann hast Du direkt die Anpassung für Deinen Code, der diesen richtig machen würde.
 

Jw456

Top Contributor
erkläre doch erst mal was "A" "B" "C" für Antworten Ausgaben sind. oder gib einen sinnvollen Text auf die Konsole aus.
Damit wir auch wissen was du prüfen willst.
 

HeiTim

Mitglied
erkläre doch erst mal was "A" "B" "C" für Antworten Ausgaben sind. oder gib einen sinnvollen Text auf die Konsole aus.
Damit wir auch wissen was du prüfen willst.
A: die Variablen alle den gleichen Wert haben,
B: die Variablen alle unterschiedliche Werte haben,
C: mindestens zwei Variablen den gleich Wert haben.
Die drei Variablen sind vom Typ int und sollen an die Methode übergeben werden. Nutzen Sie Verzweigungen und geben Sie die erfüllte Bedingungen ("A", "B" oder "C") auf die Konsole aus. Wenn alle Variablen den gleichen Wert haben, soll nicht zusätzlich ausgegeben werden, dass mindestens zwei den gleichen Wert haben.

tut mir leid ich muss halt die aufgabe beschränkt machen weil es vom Test sonst nicht aktzeptiert wird also wie gesagt das erste und letzte hab ich richtig gemacht nur die zwei in der mitte stimmen nicht so ganz das siehst du unter mein code Was erwartet und erhalten wurde.
 

HeiTim

Mitglied
Also diese Bedingung: if (x>=y && x>=z && y>=z) verstehe ich nicht. Es geht doch um:

Und daher ist wichtig, die Logik zu verstehen:

Hier ist also wichtig, dass halt gesagt wurde:

Es ist dadurch entweder A, B oder C. Andere Fälle kann es nicht geben!

Daher meine ganz deutliche Meinung: Schau Dir an, was ich zu if / else if / else geschrieben habe und versuch diese Bedeutung nachzuvollziehen! Dann hast Du direkt die Anpassung für Deinen Code, der diesen richtig machen würde.
Du hast schon recht mit dem was du sagst jedoch ändert es nichts am Ergebnis
if (x>=y && x>=z && y>=z)

Tipp ein prüfen auf x geich y .... hast du in deiner erste if schon.
also meinst du die ist sinnlos?
 

HeiTim

Mitglied
Es muss glaub ich mit der Ersten if etwas falsch sein den sie gibt nicht A aus wie es soll sondern AC aber ich komm nicht drauf wieso
 

Oben