Erste Schritte for-Schleife zahlen auf und abzählen und ausgabe formatieren

alexx

Mitglied
Hallo,
Es sollen mit Hilfe von verschachtelte for-Schleife folgendes ausgegeben werden:
--------------------------------
1 2 3 4 5 6 7 8
2 3 4 5 6 7 8 9
3 4 5 6 7 8 9 10
4 5 6 7 8 9 10 11
5 6 7 8 9 10 11 12
6 7 8 9 10 11 12 13
7 8 9 10 11 12 13 14
8 9 10 11 12 13 14 15
--------------------------------

Ich habe nur soweit geschafft:rtfm:
Java:
public class Aufgabe4_3 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		

		for(int j =1; j< 9; j++){
		
			
			for(int i =1; i < 9; i++)
				System.out.print(i);
				System.out.println(j);
				
			}
		
			
			}
	
		}
 

Cola_Colin

Top Contributor
Java:
public class Aufgabe4_3 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		

		for(int j =1; j< 9; j++){
		
			
			for(int i =1; i < 9; i++) // Der startwert sollte hier nicht 1 sein, der endwert um 9 höher als der Startwert. Startwert ist also variabl.
				System.out.print(i);  // hier willst du nur eine der beiden Zahlen ausgeben
				System.out.println(j); // Den Zeilenumbruch willst du wohl eher ausserhalb der Schleife ausgeben.
				
			}
		
			
			}
	
		}
 

diggaa1984

Top Contributor
bezüglich der inneren schleife fällt ja beim betrachten der gewünschten zeilen auf, dass diese mit der zahl beginnen die der aktuellen zeilenzahl entspricht, also die erste zeile beginnt mit 1 die 2. mit 2 etc.

wieviele zeilen du hast bestimmst du ja mit der i-schleife ... nun kannst du dir anhand dessen den start und endwert der inneren schleife ableiten!

der zeilenumbruch, wie mein vorredner schon sagte, direkt nach der inneren schleife, reicht völlig
 

Andi_CH

Top Contributor
Als erstes würde ich aussagekräftigere Namen verwenden. (Der Name der Methode ist zugegebenermassen kein Paradebeispiel :) )

Zum Beispiel so

Java:
	public static void variante1() {
		// Wir wollen 8 Zeilen ausgeben
		for(int zeilennummer = 0; zeilennummer < 8; zeilennummer++) {
			// Jetzt wollen wir 8 Ziffern ausgeben (auf der ersten Zeile von 1 - 8)
			for (int ziffer=1; ziffer <= 8; ziffer++) {
				// hier muss etwas berechnet und ausgegeben werden ;-)
			}
			System.out.println();
		}
	}

Es kann auch, wie schon erwähnt, daran gedacht werden die innere Schleife nicht mit 0 zu starten, sondern eben mit dem Wert, der als erstes ausgegeben werden muss ;-)
 

alexx

Mitglied
danke für die Antworten.
Dee Schleife ist nicht so einfach zu schreiben.
Bin soweit gekommen und der gewünschte Effekt ist immer noch nicht erreicht:
Java:
	for(int j =1; j< 9; j++){
        
				System.out.println(j); 
			for(int i =2; i < 9; i++) 
					System.out.print(i); 
                
            }
Ausgabe:
1
23456782
23456783
23456784
23456785
23456786
23456787
23456788
2345678
 

Andi_CH

Top Contributor
BOAH!!!!!

Bei welchem Wert soll die innere Schleife starten? sicher nicht bei 2

Welche (Wink mit dem Zaunpfahl wenn du meine Source anschaust) NUMMER steht denn als erste Ziffer da ;-)

Und nimm bitte nicht "i" und "j" das so rein gar nichts aus

So als Anreiz zum weitermachen die erste Variante
Java:
	public static void variante1() {
		System.out.println("Innere Schleife startet mit 0");
		for(int zeilennummer = 1; zeilennummer <= 8; zeilennummer++) {
			for (int ziffer=0; ziffer < 8; ziffer++) {
				System.out.print((zeilennummer + ziffer) + " ");
			}
			System.out.println();
		}
	}

Beachte System.out.print - ohne "ln" und mit " " -> das gibt die richtige Formatierung
 
Zuletzt bearbeitet:

alexx

Mitglied
Ich habe dein Eintrag vorhin nicht gesehen :rtfm:
Nun ist die Frage, wie die Berechnung aussehen sollte?
Das bereitet mir echt kopfschmerzen
 

Andi_CH

Top Contributor
BOAH! Kopfschmerzen??? Steht ja mitlerweil da

Jetzt aber ran an die Variante 2 - Startwert der inneren Schleife so setzen, dass es keine so hochkomplizierte Berechnung (Das war Ironie pur :D ) braucht

Ach ja, das Abbruchkriterium der inneren Schleife dürfte dir auch noch Kopfschmerzen bereiten :)


Java:
	public static void variante2() {
		for(int zeilennummer = 1; zeilennummer <= 8; zeilennummer++) {
			for (int ziffer=XXXX; ziffer <= YYYY; ziffer++) {
				System.out.print(ziffer + " ");
			}
			System.out.println();
		}
	}

Ach ja, nochmals der Hinweis XXXX hat irgend etwas mit einer Nummer zu tun ;)
 
Zuletzt bearbeitet:
Ich hatte früher selbst immer probleme mit den verschachtelten for -Schleifen ;)
Überleg doch einfach mal bei der inneren Schleife. Mit welchem Wert muss die Schleife beginnen?
Gibt es irgendwo schon eine Variable, die diesen Wert genau anbietet? ;)
Und wie oft soll es gemacht werden? Bis die Ziffer den Wert (Variable die den Wert anbietet+Anzahl der Werte in der Zeile-1) hat
oder?
 

alexx

Mitglied
Java:
for(int zeilennummer = 1; zeilennummer <= 9; zeilennummer++) { // erzeugt spalten anzahl
            for (int ziffer= zeilennummer; ziffer <= 8; ziffer++) { // erzeugt die zeilen
                System.out.print(ziffer+" ");
            }
            System.out.println();
		}

sieht bisschen ähnlich aus:
1 2 3 4 5 6 7 8 9
2 3 4 5 6 7 8 9
3 4 5 6 7 8 9
4 5 6 7 8 9
5 6 7 8 9
6 7 8 9
7 8 9
8 9
9
 

BumBel

Mitglied
Sehr gut :)
Dann muss nur noch bei der inneren Schleife die Endbedingung um 9(oder so) höher sein als die Startbedingung

edit: Die Kommentare hättest du besser weggelassen ;) Denk nochmal drüber nach welche Schleife die Zeilen erzeugt und welche die Zahlen in die Zeile schreibt
 
Zuletzt bearbeitet:
Wenn du in der 2. for Schleife sagst ziffer<=8,
dann ist es klar, dass es so ausgegeben wird, denn
beim ersten durlauf ergibt ziffer=zeilennummer 1,
beim zweiten 2,
und so weiter. Beim 8. Durchlauf ist ziffer=zeilennummer=8
und dann ist ziffer<=8 ja schon eingetreten also wird nur noch 8 &9 ausgegeben.
btw: wieso hast du bei der äußeren for Schleife zeilennummer <= 9 ?
Wir wollen doch nur 8 Zeilen?
 

alexx

Mitglied
Java:
for(int zeilennummer = 1; zeilennummer <= 8; zeilennummer++) { // erzeugt spalten anzahl
            for (int ziffer= zeilennummer; ziffer <= zeilennummer+7; ziffer++) { // erzeugt die zeilen
                System.out.print(ziffer+" ");
            }
            System.out.println();
		}


Besten DANK!!!!!!!:toll::applaus:
 
Zuletzt bearbeitet:

Neue Themen


Oben