• Liebe User, bitte beachtet folgendes Thema: Was im Forum passiert, bleibt im Forum! Danke!
  • Hallo Gemeinde! Das Problem leidet zurzeit unter technischen Problemen. Wir sind da dran, aber das Zeitkontingent ist begrenzt. In der Zwischenzeit dürfte den meisten aufgefallen sein, dass das Erstellen von Posts funktioniert, auch wenn das Forum erstmal eine Fehlermeldung wirft. Um unseren Löschaufwand zu minimieren, bitten wir euch darum, nicht mehrmals auf 'Post Reply' zu klicken, da das zur Mehrfachposts führt. Grußworte.

Eclipse Java ForSchleife

Mitglied seit
09.09.2002
Beiträge
1.154
Reaktionen
0
import input.*;
public class forclass {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int i = 0;
double a;
System.out.print("Zahl eingeben bis zu der gezählt werden soll: ");
a = Input.ReadInt();

for(int z = 0; z == a; z = z + 1) {
System.out.println("Zahl: " + z);
}
}

}


Das is der Text Schleife laufen lassen und Zahlen ausgeben bis sie a erreichen. Aber irgendwie geht das nicht.
Kein Fehler wird angezeigt, aber nach der Eingabe von a nach dem kompilieren is das Proggi einfach beendet ohne Ausgabe von z.

Danke schon mal im vorraus.
 

RRA^StArFiRe

Guest
Code:
import input.*;
public class forclass {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int i = 0;
		int a; // ------------
		System.out.print("Zahl eingeben bis zu der gezählt werden soll: ");
		a = Input.ReadInt();

                System.out.println();
		for(int z=0; z<=a; z++)  // -------------------
	            System.out.println("Zahl: " + z);
	       
	}

}

bei --------- sind fehler.
erstens bekommst du leichte probleme beim vergleich von double mit int.
wenn du mit nachkommastelle zählen willst, musst du dann in der forschleife z als double machen und die zählvariante z= z+ 0.1 machen. oder 0.001 je nachdem wie du es haben willst.
ausserdem ist z==a als schleifeninvariante eher schlecht, schau dir nochmal for-schleifensyntax an.
da kommt nämlich nicht wie beim until z==a, sondern eher vergleichbar mit while. und while z==a, das würde bedeuten, wenn a nicht 0 ist, geht der da nicht rein.

und i ist eine unbenutzte variable, kannst rausschmeissen.

geschweifte klammern bei forschleifen mit nur einer zeile als body kannst dir ebenfalls sparen.
und anstatt z=z+1 schreibt man lieber z++, sofern es sich um integer handeln.
 

Busta_inaktiv

Guest
Original geschrieben von (tHeH@Wk)
import input.*;
a = Input.ReadInt();

for(int z = 0; z == a; z = z + 1) {

Im Kopf der For-Schleife steht u.a. die Bedingung, für die die Schleife durchlaufen werden soll - kein Abbruchbedingung!

Konkret: Liefert der Ausdruck zwischen den Semikolons true wird in die Schleife eingetreten, sonst nicht.

Das Programm sollte mit z<=a laufen. (kann es nicht testen, da input.ReadKey keine Standard-Api ist, also wahrscheinlich irgendwas von euch selbst gebasteltes)


edit: lahm :[
Aber Widerspruch zu Starfire: Geschweifte Klammern IMMER setzen, sonst handelst du dir bei späteren Änderungen immer wieder Terror ein.
 

RRA^StArFiRe

Guest
naja, ich find die lesbarkeit ziemlich bekackt, wenn man immer geschweifte klammern setzt, da hilft einrücken.
 

Busta_inaktiv

Guest
Es ist weit bekackter mit zwanzig Mann an einem Projekt zu basteln und unzählige kaum zu entdeckende Fehler durch ehemals einzeilige Schleifen rauszusuchen :(
 
Mitglied seit
09.09.2002
Beiträge
1.154
Reaktionen
0
danke funktioniert jetzt.. dachte dass die beendigungsbedingung nicht immer sondern nur in dem beendingungfall true sein muss..
 

cart

Technik/Software Forum
Mitglied seit
01.08.2002
Beiträge
4.873
Reaktionen
0
Ort
New York
Ähem, das wäre ja gegen den Sinn einer for-Schleife, die ja nichts anderes ist als ein weiterentwickeltes while.
 

Busta_inaktiv

Guest
Original geschrieben von cart
for-Schleife, die ja nichts anderes ist als ein weiterentwickeltes while.
Selbst ausgedacht? Die for-schleife entstand von einer while unabhängig als Schleife, deren Wiederholungsanzahl feststeht.
 

cart

Technik/Software Forum
Mitglied seit
01.08.2002
Beiträge
4.873
Reaktionen
0
Ort
New York
Das wäre mir neu, zumal man doch jede while-Schleife durch eine for-Schleife darstellen kann und andersrum.
 

Busta_inaktiv

Guest
jo, will nur klarstellen, dass die for nicht aus der while hervorgegangen ist.
 

cart

Technik/Software Forum
Mitglied seit
01.08.2002
Beiträge
4.873
Reaktionen
0
Ort
New York
Das mag sein, aber darauf kommt es ja auch grade nicht so wirklich an. Es geht ja um die Funktionsweise :)
 

The_Company

Guest
Der einzige Vorteil einer for Schleife ist, dass die Iterationsbedingung jedesmal durchlaufen wird, auch und besonders wenn man nen "continue" in der Schleife hat.
 
Mitglied seit
08.03.2004
Beiträge
1.574
Reaktionen
0
den fehler hab ich am Anfang auch gemacht. Man denkt nämlich man gibt (Startwert, Endwert(Nicht wiederholbedingung), Zählweite) an. So macht man das ja auch in Pascal z.B. und wie jeder weiss ist Pascal eine Beliebte Schulinformatik-Sprache.
 
Oben