Schleifen (anfänger)

Hm1909

Mitglied
Hallo Leute,
Wir haben eine Aufgabe in der Vorlesung gemacht und dazu auch die Lösung erhalten. Leider komme ich und viele meiner Kommilitonen nicht auf das Ergebnis. Wäre cool wenn mir da jemand auf die sprünge helfen könnte 🙂

for(int i=10 ; i>0 ; i--)
marke 1:
for(int j = 1 ; j<=10 ; j++) {
if (i*j>9) break marke 1 ;
sytem.out.print (i*j+", \t");
}
sytem.out.printline ("Ende");

Die Lösungen sind:
9,8,7,6,5,4
8,3,6,9,2
4,6,8
1,2,3,4,5,6,7,8,9
Ende

Würde mich über eine schnelle Hilfe freuen
 
Die Lösung haben wir am Ende der Vorlesung erhalten. Unser Prof will uns aber nicht weiterhelfen, daher meine Frage, wie ich auf die Lösungen komme.
 
In deinem Code-Stück sind einige Tippfehler. Wahrscheinlich scheiterst du schon daran, dass du die Compiler-Fehlermeldungen nicht verstehst.
Ich habe das Programm zum Laufen gebracht:
Java:
public class ForumTest {
    public static void main(String[] args) {
        for(int i=10 ; i>0 ; i--)
            marke1:
                for(int j = 1 ; j<=10 ; j++) {
                    if (i*j>9) break marke1 ;
                    System.out.print (i*j+", \t");
                }
        System.out.println ("Ende");
    }
}

Folgendes hat nicht gepasst:
* Ein Label darf kein Leerzeichen enthalten ("marke1" statt "marke 1")
* "sytem" sollte eigentlich "System" heißen. Beachte bitte die Groß-/Kleinschreibung
* "printline" gibt es nicht, es heißt "println".

Die Zeilenumbrüche in deinem Ergebnis werden vom Programm so nicht gesetzt.
Das Programm liefert die Ziffern alle in einer Zeile.
 
hier wird rückwärtsgezählt von 10 bis 1
Java:
for(int i=10 ; i>0 ; i--)
hier wird hochgezählt
Java:
for(int j = 1 ; j<=10 ; j++) {
hier wird gerechnet:
im ersten durchlauf 10x1, im 2ten durchlauf 9x2 usw.
Java:
if (i*j>9) break marke 1 ;
sytem.out.print (i*j+", \t");
}
sytem.out.printline ("Ende");
mit if wird geprüft ob das ergebnis grösser 9 ist. wenn ja, soll zurück zu marke1 gesprungen ("Sprung"marke1) werden
wenn nein erfolgt ausgabe des ergebnis auf der konsole

musst dir vorstellen: du hast ne tabelle mit 2 spalten
spalte1 die zahle 10,9,8,7 usw. spalte2 zahlen 1,2,3,4 usw.
in spalte 3 multiplizierst du die werte aus spalte1 x spalte2...
for(int i=10 ; i>0 ; i--) ===> spalte1 (i-- bedeutet postdekrement - oder einfach abziehen wert i wird um 1 reduziert)
for(int j = 1 ; j<=10 ; j++) ==> spalte2(i++ bedeutet postinkrement - addieren, wert i wird um 1 erhöht)

hoffe das hilft
mfg martin
 
Zuletzt bearbeitet von einem Moderator:
hier wird gerechnet:
im ersten durchlauf 10x1, im 2ten durchlauf 9x2 usw.
das ist falsch---
schleife aussen geht mit 10 in den durchlauf, schleife innen startet mit 1
in der abfrage wird geprüft ob 10x1 grösser 9 sind
dann springts zurück zur äusseren schleife und reduziert den wert um 1
mit 9 geht die aussenschleife in den nächsten durchlauf der wieder bei 1 startet
also 9x1 --- abfrage grösser als 9? nö, also ausgabe
dann innere schleife auf 2 gesetzte
9x2 grösser 9? jap - sprung zu m,arke1
neuer lauf diesmal mit 8
8x1 grösser 9? nö also ausgabe
innerer schleife 1 hoch
8x2 grösser als ..........

so war das
 

Zurück
Oben