For-Schleife Problem

atomvirus

Mitglied
Meine Aufgabe:

Schreiben Sie ein Programm, das eine positive int-Zahl n einliest und n Zeilen mit n Spalten ausdruckt dergestalt dass in Zeile i in Spalte j das Zeichen '*' gedruckt wird genau dann wenn i*i <= j gilt (und andernfalls das Zeichen '.').


Sind gerade bei For-Schleifen, nur weiß ich nicht wie ich das mit den n Zeilen u. n Spalten ausdrücken soll bzw. nicht einmal einen Ansatz... Kann mir jemand weiterhelfen, sollte eig. elementarer Stoff sein...

Lg
 
Java:
for(int zeile = 1; zeile <= n; zeile++) {
   for(int spalte = 1; spalte <= n; spalte++) {
        //male das Zeichen an Position (zeile, spalte)
   }
   //Zeilenumbruch
}
 
genau dann wenn i*i <= j gilt (und andernfalls das Zeichen '.').
übersetzen wir mal auf englisch ;-)
hm genau dann wenn -> if
und andernfalls -> else

hm weiterdenkt
Java:
if (i*i<=j) {
   ausgabe'*';
} else {
   ausgabe'.'
}

hm könnte funktionieren - kommt jetzt dann noch die Frage wo im Code das hin muss ???:L 🙂
 
Java:
if (zeile * zeile <= spalte) {
    // print '*'
}
else {
    //print '.'
}
 
hm könnte funktionieren - kommt jetzt dann noch die Frage wo im Code das hin muss ???:L 🙂
--> Ironie ist immer sehr hilfreich


Grundlegend funktioniert es, nur fehlt mir der Zeilenumbruch bzw. funktioniert nicht richtig...
Java:
public class Bsp08 {
	 
	public static void main(String[] args) {
		int n;
	
		System.out.println();
		System.out.println("Geben Sie eine Zahl ein");
		n = SavitchIn.readLineInt();
	
		for(int zeile = 0; zeile <= n; zeile++) {
			for(int spalte = 0; spalte <= n; spalte++) {
				if (zeile * zeile <= spalte) {
					System.out.println("*");
				} else {
					System.out.println(".");
				}
			}
			System.getProperty("line.separator"); //Zeilenumbruch
		}
	}
}
 
-gg- danke, banaler Fehler 😀

...okay funktioniert, aber habe nicht das gewünschte ergebnis. Denn statt

*
*
*
*
*

.
*
*
*
*
*
usw. sollte ich *****
.**** usw. rausbekommen... :-/
 
Zeile 13 und 15 müssen auch
Code:
System.out.print
heißen. Ohne ln, was übrigens für Line steht.
 
Danke Super, bist wirklich eine Hilfe gewesen !!

Kannst du mir hier auch noch behilflich sein?!

[Java]
public class Bsp07 {

public static void main(String[] args) {
double wert, wertneu;
int year;

System.out.println();
System.out.println("Geben Sie den Anschaffungswert an: ");
wertneu = SavitchIn.readLineDouble();
wert = wertneu;
for (year = 0; wertneu >= wert * 0.12; wert * 0.8)
System.out.println("Jahr"+ year +": Wert " + wert);
}

}
[/code]

beim kompilieren spuckt er mir eine Fehlermeldung aus, und zwar beim wert * 0.12, weiß aber nicht warum...
 
Vermutlich zeigt der dir den Fehler NACH *0.12, also:
Code:
wert * 0.8
. Du musst es ja irgendwo speichern, also willst du vermutlich eher
Code:
wert=wert * 0.8
machen.
Es sieht aber verdächtig nach einer möglichen Ursache für Endlosschleife aus.
 
--> Ironie ist immer sehr hilfreich
Ich gebs zu, das war Sarkasmus, aber die Frage wie ein if zu implementieren ist, hat bei mir halt etwas ausgelöst.

[Java]
public class Bsp07 {

public static void main(String[] args) {
double wert, wertneu;
int year;

System.out.println();
System.out.println("Geben Sie den Anschaffungswert an: ");
wertneu = SavitchIn.readLineDouble();
wert = wertneu;
for (year = 0; wertneu >= wert * 0.12; wert * 0.8)
System.out.println("Jahr"+ year +": Wert " + wert);
}

}
[/code]

beim kompilieren spuckt er mir eine Fehlermeldung aus, und zwar beim wert * 0.12, weiß aber nicht warum...

Die Fehlermeldung ist "Invalid Assignment Operator"

For erwartet dort, dass der Schlaufenvariablen ein Wert zugewiesen wird
wert = wert * 0.8

Allerdings muss ich schon sagen, dass diese Schleife extrem schwierig zu verstehen ist -

wertneu ist immer der Eingabewert
Das statement year = 0 - hat überhaupt nichts mit der Schleife zu tun
wert ist am Anfang gleich wertneu und wird immer kleiner (wert = wert * 0.8)
wert wir dann vor dem Vergleich noch mit 0.12 multipliziert, also noch kleiner gemacht
Die Schlaufe terminiert sobald wert*0.12 > wertneu ist, also NIE

Solch komplizierten Konstrukte, auch wenn sie stimmen, sind sehr gefährlich, denn nicht jeder der da am Code etwas ändern muss, versteht es .....
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben