Erste Schritte für eine for-Schleife eine Methode schreiben

stefani

Mitglied
Hallo,
ich habe eine for-Scheife die Sterne in Form eines Dreieck's ausgibt:
Java:
	for (int i =1; i <= 5; z++){
			for (int j = 1; j <= i; j++ )
				System.out.print("*");
					System.out.println( );
		}

Ich würde gerne hier für eine Methode machen die Anstelle "*" Zahlen ausgibt.

Meine Überlegung:
Java:
public static void int zahlen( int z) {

for (z=1; i <= 5; i++){
			for (int j = 1; j <= z; j++ )
				System.out.print(z);
					System.out.println( );
Ausgabe sollte:
12345
1234
123
12
1
 

stefani

Mitglied
Ok, bisschen unpräzis von mir :)

Code angepasst:
Java:
public static void int zahlen( int z) {
 
for (z=1;z <= 8; i++){
            for (int j = z; j <= z; j++ )
                System.out.print(z);
                    System.out.println( );
bekomme damit diese Ausgabe:
11111111
22222222
33333333
44444444
55555555
66666666
77777777
88888888

ich will aber sowas haben:
12345678
1234567
123456
12345
1234
123
12
1
 
Zuletzt bearbeitet:
T

Tomate_Salat

Gast
bei deinen Variablen blick ich nicht mehr durch. Man sollte im übrigen auch keine Parameter überschreiben (siehe z). Hier mal ein funktionierendes KSKB:
Java:
public static void main(String[] args) {	
    int countTo=5;
	for (int i=countTo;i>0;i--) {
		zahlen(i);
		System.out.println();
	}
}
public static void zahlen(int z) {
	for (int i=1;i<=z;i++)
		System.out.print(i);
}
 

thinkPink

Mitglied
Hallo stefani,

ich verstehe nicht ganz, was dir diese Zahlenreihen bringen, aber okay :D Brauchst du das für ne Schulaufgabe?

Ich hätte die Zahlen in ein Array geschrieben und und dann jedes mal die vorige Länge - 1 ausgegeben. Für mich ist das von der Denkweise am einfachsten.
 
T

Tomate_Salat

Gast
Ich hätte die Zahlen in ein Array geschrieben und und dann jedes mal die vorige Länge - 1 ausgegeben. Für mich ist das von der Denkweise am einfachsten.

Am einfachsten Wäre wohl:
Java:
public static void main(String... args)
{
    System.out.println("12345");
    System.out.println("1234");
    System.out.println("123");
    System.out.println("12");
    System.out.println("1");
}

aber Effizient ist beides nichts. Das mit der for-schleife ist flexibler und die Ausgabe könnte einfach abhängig von der Benutzereingabe gemacht werden.
 

stefani

Mitglied
besten Dank,
ich hab gerade programmiert und wollte die zahlen spiegeln,wie folgt:
1
12
123
1234
12345
123456
1234567
12345678

Java:
	public static void zahlen(int z) {
    for (int i=1;i<=z;i++)
        for (int j = 1; j <= i; j++ )
        System.out.print(i);
	}
	public static void main(String[] args) {    
    	int countTo=5;
   		 for (int i=countTo;i>0;i--) {
      	 	 zahlen(i);
       		 System.out.println();
    }
	}


}

@thinkPink, eine Version auch mit Array zu sehen würde mein Verständnis fürs Programmieren weiter fördern. Wenn es dir nichts ausmacht, kann bitte das Beispiel auch mit Array zu zeigen.
Ich habe ungefähre Vorstellung, wie es programmiert wird.

Danke
 
Zuletzt bearbeitet:

thinkPink

Mitglied
Am einfachsten Wäre wohl:
Java:
public static void main(String... args)
{
    System.out.println("12345");
    System.out.println("1234");
    System.out.println("123");
    System.out.println("12");
    System.out.println("1");
}

aber Effizient ist beides nichts. Das mit der for-schleife ist flexibler und die Ausgabe könnte einfach abhängig von der Benutzereingabe gemacht werden.

Irgendein Lerneffekt o.Ä. muss ja hinter der Aufgabe stecken... dazu muss man aber wissen, wie das Ziel lautet :p
Vermutlich geht's einfach nur um die Verwendung von for-Schleifen.
Und ne Benutzereingabe kann man ja bei zwei Schleifen als auch bei Schleife+Array einbauen. Nur meine Idee braucht mehr Platz würde ich vermuten ;)
 
T

Tomate_Salat

Gast
@stefani: die Grundlage hast du (von mir bekommen). Jz versuche erst mal den Code zu verstehen, dann wirst du merken, dass du nur eine Zeile ändern musst, damit du dein gewünschtes Ergebnis erhälst.

@thinkPink: kann man. Nur stößt deine Methode schneller an seine Grenzen und ist letztendlich eigentl. mehr Aufwand.
 

thinkPink

Mitglied
besten Dank,
ich hab gerade programmiert und wollte die zahlen spiegeln,wie folgt:
1
12
123
1234
12345
123456
1234567
12345678

Java:
	public static void zahlen(int z) {
    for (int i=1;i<=z;i++)
        for (int j = 1; j <= i; j++ )
        System.out.print(i);
	}
	public static void main(String[] args) {    
    	int countTo=5;
   		 for (int i=countTo;i>0;i--) {
      	 	 zahlen(i);
       		 System.out.println();
    }
	}


}

@thinkPink, eine Version auch mit Array zu sehen würde mein Verständnis fürs Programmieren weiter fördern. Wenn es dir nichts ausmacht, kann bitte das Beispiel auch mit Array zu zeigen.
Ich habe ungefähre Vorstellung, wie es programmiert wird.

Danke

Bei mir sieht dein Programm im Ergebnis so aus:
122333444455555
1223334444
122333
122
1

Also hast du es fast geschafft ;)

Ich erkläre mal meine Idee:
Ein Array besteht ja aus Feldern. Kann man sich vorstellen wie aneinandergereihte Kästchen (eindimensionales array). Ich gehe mal davon aus das weißt du bereits. ?
Ich hätte jede einzelne Zahl in ein Feld geschrieben. Danach gibt eine for-schleife im ersten Durchlauf alle Felder aus. Im zweiten Durchlauf alle Felder bis auf das letzte (arraylänge -1), usw.
Ich finde das versteht man besser als zwei Schleifen; vor allem wenn man noch nicht viel Erfahrung hat. Das kannst du ja mal ausprobieren:)
 

stefani

Mitglied
ja, schon, wie kann ich die for schleife in main-methode auch in methode zahlen einpacken?

Meine überlegung ist. wenn ich in main-methode beispielweise zahlen(5); aufrufe soll die das Ergebnis liefern.

Danke
 
S

SlaterB

Gast
na dann nimmt die Schleife
> for (int i=countTo;i>0;i--) {
und das System.out.println(); + die Klammer am Ende und schreibe sie exakt um den vorhandenen Code in der Methode,

dazu bedenke noch dass der Parameter der Methode zahlen() nun für die äußere Schleife gedacht ist
und dass die innere Schleife jetzt nicht mehr mit dem Parameter z arbeitet,

das sind so einfache Dinge, viel mehr kann man dazu kaum schreiben, außer den Code zu verraten,
was natürlich gleich ginge aber auch langweilig ist,

keine eigenen Ideen wie Code nunmal aussieht?
 
T

Tomate_Salat

Gast
Versuche den Code zu verstehen. Wenn du damit Schwierigkeiten hast, dann nimm den Debugger und geh Zeile für Zeile durch. Wenn du dich mit dem Debugger nicht auskennst, dann gehe es selbst Zeile für Zeile durch, und mache dir vllt mittels Kommentaren Randnotizen.
 

stefani

Mitglied
Java:
	public static void zahlen(int z) {
		
	 for (int i=countTo;i>0;i--) {
    	for (int i=1;i<=z;i++)
      
        System.out.println();
    }
        System.out.print(z);
 
}
 
S

SlaterB

Gast
'um die Schleife rum' heißt um beide bzw. alle Zeilen der Schleife, nicht VOR System.out.print(z); ..
wobei es die auch vorher gar nicht gab, welche Gedanken verfolgst du bei deinen Änderungen?

wenn du nichtmal Fragen dazu stellst macht das nicht gerade Spaß..
 
Zuletzt bearbeitet von einem Moderator:

stefani

Mitglied
Danke für eure Geduld ich komme irgendwie gar nicht mehr klar ;-(
Java:
 public static void zahlen(int z) {
        
     for (int i=countTo;i>0;i--) {
        for (int i=1;i<=z;i++)
        System.out.println();
   	 System.out.print(i);
 
}
}

aufruf zahlen(i)
meine frage welche wert wird denn countTo bekommen???

Debugger dürfen wir nicht nutzen, selbst alles herausfinden....etc
 

stefani

Mitglied
Also;
Java:
for (int i=countTo;i>0;i--)
dieses Teil ist die äßere Schleife nehmen wir countTo = 5
würde 12345 ausgeben und jedes mal eine runterzählen
1234
123
12
1

Was wird denn damit erreicht?
Java:
for (int i=1;i<=z;i++)
vorallem z?
 
S

SlaterB

Gast
die count-Schleife ist nur für Zeilen zuständig und gibt pro neue Zeile eine Zahl x vor, 5, 4, 3, 2, 1

danach bzw. verschachtelt darin kommt die innere Schleife, die für die aktuelle Zahl x Ziffern 1-x ausgibt
 
T

Tomate_Salat

Gast
dieses Teil ist die äßere Schleife nehmen wir countTo = 5
würde 12345 ausgeben und jedes mal eine runterzählen
1234
123
12
1
beginnend bei 12345

hier nochmal das komplette Beispiel von mir (zur übersicht):
Java:
public static void main(String[] args) {	
    int countTo=5;
	for (int i=countTo;i>0;i--) {
		zahlen(i);
		System.out.println();
	}
}
public static void zahlen(int z) {
	for (int i=1;i<=z;i++)
		System.out.print(i);
}


Was wird denn damit erreicht?
Java:
for (int i=1;i<=z;i++)
vorallem z?

an zahlen wird der Parameter [c]z[/c] übergeben. Nehmen wir mal an, z wäre 5 und setzten das in die for-schleife ein. Dann steht da:[c]for(int i=0;i<=5;i++)[/c] D.h. i beginnt bei 0 und erhöhe den Wert i jedes mal um eins, solange dieser kleiner oder gleich dem Wert 5 ist.

Das sind aber wie gesagt Grundlagen, ohne diese zu kennen, wirst du böse Schwierigkeiten haben. Also lerne diese besser nochmal.
 

Neue Themen


Oben