Erste Schritte Break-Anweisung bei if-else

MarioW

Mitglied
Hallo liebe Javagemeinde,

Ich habe ein Problem mit einer Aufgabe die ich für mein Studium lösen soll.

Aufgabe: Schreiben Sie eine Main-Methode, in der die Werte von 3 lokalen int-Variablen a,b und c aufsteigend sortiert werden. Vertauschen Sie die Werte so, dass zum Schluss a<b<c gilt und geben Sie die Anfangswerte und das Ergebnis in der Form aus:

unsortiert: a=9 b=5 c=7
sortiert: a=5 b=7 c=9

Testen Sie Ihr Programm für folgende Fälle:

a) a=30 b=20 c=10
b) a=17 b=19 c=18
c) a=25 b=20 c=30

Um diese Aufgabe zu lösen dachte ich das Problem mit if-else Anweisungen anzugehen, was insofern auch funktioniert. Das Problem ist das ich nicht weiß wie und ob ich nach der ersten sortierten Ausgabe eine break-Anweisung geben kann, um das Programm zu beenden.

Hier ist mein bisheriges Programm:
Java:
public class Übungsblatt5Aufgabe6 {
	public static void main (String[]args){
		int a,b,c,e,f;
		a=25;
		b=20;
		c=30;
		e=0;
		f=0;
		System.out.println("unsortiert: a="+a+", "+"b="+b+", "+"c="+c);
		if (a<b){
			if (b<c){
			System.out.println("sortiert: a="+a+", "+"b="+b+", "+"c="+c);}
			
			else 
				f=b;
				b=c;
				c=f;
				if (a<b){
					System.out.println("sortiert: a="+a+", "+"b="+b+", "+"c="+c);}
				else 
					e=a;
					a=b;
					b=e;
					System.out.println("sortiert: a="+a+", "+"b="+b+", "+"c="+c);
				}
		else 
			e=a;
			a=b;
			b=e;
			if(b<c){
				System.out.println("sortiert: a="+a+", "+"b="+b+", "+"c="+c);}
			else 
				f=b;
				b=c;
				c=f;
				if (a<b){
					System.out.println("sortiert: a="+a+", "+"b="+b+", "+"c="+c);}
				else 
					e=a;
					a=b;
					b=e;
					System.out.println("sortiert: a="+a+", "+"b="+b+", "+"c="+c);
			
}}

Für Hilfe jeglicher Art wäre ich wirklich sehr dankbar.

Mit freundlichem Gruß
Mario Weidler
 
in deinem Programm felhen ein paar Klammern, darum wird immer alles durchlaufen .... 🙂 wenn du die ELSE Blöcke richtig klammerst hast du das Problem nicht mehr

Im Moment wird immer nur die erste Zeile nach dem Else Block ausgeführt / bzw. nicht ausgeführt 😉

Java:
public class Übungsblatt5Aufgabe6 {
    public static void main (String[]args){
        int a,b,c,e,f;
        a=25;
        b=40;
        c=18;
        e=0;
        f=0;
        System.out.println("unsortiert: a="+a+", "+"b="+b+", "+"c="+c);
        if (a<b){
            if (b<c){
            System.out.println("sortiert: a="+a+", "+"b="+b+", "+"c="+c);            
            }else{
                f=b;
                b=c;
                c=f;
                if (a<b){
                    System.out.println("sortiert: a="+a+", "+"b="+b+", "+"c="+c);
                }else{
                    e=a;
                    a=b;
                    b=e;
                    System.out.println("sortiert: a="+a+", "+"b="+b+", "+"c="+c);
                }
            }  
        }else{ 
            e=a;
            a=b;
            b=e;
            if(b<c){
                System.out.println("sortiert: a="+a+", "+"b="+b+", "+"c="+c);
            }else{             	
                f=b;
               
                b=c;
                c=f;
                if (a<b){
                    System.out.println("sortiert: a="+a+", "+"b="+b+", "+"c="+c);
            	}else{
                    e=a;
                    a=b;
                    b=e;
                    System.out.println("sortiert: a="+a+", "+"b="+b+", "+"c="+c);
            
            	}
            }	
        }
    }}
 
Zuletzt bearbeitet:
Danke für deinen Hinweis, dann werde ich mal sehen was sich machen lässt 🙂.

Hat funktioniert, vielen Dank :toll:
 
Zuletzt bearbeitet:
hier wäre auch noch ein "schummel" Beispiel 😀 aber ich glaub so war die Aufgabe nicht gemeint 😀

Java:
int a=2;
    		int b=10;
    		int c=5;
    		
    		ArrayList<Integer> list=new ArrayList<Integer>();
    		list.add(a);
    		list.add(b);
    		list.add(c);
    		Collections.sort(list);
    		
    		c=list.get(2);
    		b=list.get(1);
    		a=list.get(0);
    		
    		System.out.println(a + " "+ b+" "+c);
 
Nein, das glaube ich auch nicht dass das so gemeint war, wir bekommen mit Sicherheit verraten dass das ganze auch mit wesentlich weniger Aufwand zu implementieren ist, aber erst dürfen wir mal die langen Wege gehen. 🙂
 
Aufgabe: Schreiben Sie eine Main-Methode, in der die Werte von 3 lokalen int-Variablen a,b und c aufsteigend sortiert werden. Vertauschen Sie die Werte so, dass zum Schluss a<b<c gilt und geben Sie die Anfangswerte und das Ergebnis in der Form aus:
Und wenn zwei oder alle drei Zahlen gleich sind? :reflect:
Das sollte eher
Code:
a <= b <= c
heißen.

Wozu brauchst du e und f? Würde nicht eine Variable reichen?
Außerdem sollte man den Sichtbarkeitsbereich von Variablen so klein wie möglich halten.

Wie sieht die Methode aus, wenn du die drei Tests ausführen willst?

Du hast da eine Zeile, die auffällig oft vorkommt:
Code:
System.out.println("unsortiert: a="+a+", "+"b="+b+", "+"c="+c);
Doppelter Code ist unschön. Kannst du diese Anweisung nicht einfach ans Ende der Methode setzen?
 

Zurück
Oben