Java Eclipse aufzählen

T

Thommsan

Gast
Hallo,

unsere Aufgabe ist es, eine For_Schleife, die bis 100 zählt, zu deklarieren. In jedem Schleifendurchlauf soll die Summe aller bisherigen Zählerwerte auf der Konsole ausgegeben werden (0,1,3,6,10,15,...)...

Unsere Lösung sieht wie folgt aus:

public class For_Schleife {

/**
* @param args
*/
public static void main(String[] args) {
int Summe = 0, i = 0;
for (i=0; Summe + i <= 100; i++)

{
Summe = Summe + i;


System.out.println(Summe);
}

}

}


In der Konsole wird die richtige Lösung ausgegeben. Ich wollte nur wissen ob das so komplett richtig ist, oder wir das umständlich gemacht haben und es eventuell einfacher geht?!

Danke schon mal
 
würde es so machen
also i in der for schleife initialisieren

for ( int i = 0; (Summe + i) < 100 ; i++ {
Summe += i; // entspricht Summe = Summe + i;
System.out.println(Summe);
}
 
Zuletzt bearbeitet:
Also wenn ich deinen Code uebernehme kommt bei mir 91 raus, was wohl nich stimmen kann oder? Die Bedingung in der schleife ist mMn nicht richtig, da eigentlich deutlich mehr rauskommen sollte.
Was noch kuerzer geht ist Summe = Summe + i; daraus kannst du Summe += i; machen, was aber nicht wirklich wichtig ist.
 
okay, das mit dem += kannte ich noch gar nicht.... hab ja jetzt erst angefangen.... danke
Ergänzung ()

die schleife soll doch aber bis 100 zählen, und nach 91 kommt ja 105 und das wäre ja drüber... sehe ich das richtig oder nicht?
 
sollst du eig. eine for schleife schreiben die 100 mal durchläuft oder bis summe + i < 100 ?

btw man sollte (Summe + i) in Klammern setzen falls es so gemeint ist
 
Naja so zaehlt sie aber nicht bis hundert, da summe + i ja deutlich schneller die 100 ueberschreiten, als wenn du nur i erhoehen wuerdest.

EDIT: Sollst du nur bis hundert zaehlen oder alle hundert Zahlen aufsummieren?
 
Code:
public class ForSchleife {

     public ForSchleife() {
          int sum = 0;
          for(int i = 0; (sum += i) <= 100; i++) 
               System.out.println(sum);
     }

     /**
     * @param args
     */
     public static void main(String[] args) {
          new ForSchleife();
     }
}


So hätte ich es gemacht, aber dein Codeschnipsel sollte auch einwandfrei laufen ;)
 
Also im skript steht "Deklarieren Sie eine Variable mit dem Namen "Summe" vom Typ Integer. Erweitern Sie Ihr Programm um eine for-Schleife die bis 100 zählt. Geben Sie in jedem Schelifendurchlauf die Summe aller bisherigen Zählerwerte auf der Konsole aus (0 1 3 6 10 15...).
 
Ich versteh das als for(int i = 0; i < 100; i++){}

Weil dann zaehlt sie wirklich bis hundert durch und summiert die Zahlen auf.
 
So wie ich das verstehe, soll die for-Schleife bis einschließlich 100 alle Werte durchlaufen:

Code:
public class ForSchleife {

     public ForSchleife() {
          int sum = 0;
          for(int i = 1;  [U]i <= 100[/U]; i++) 
               System.out.println((sum += i));
     }

     /**
     * @param args
     */
     public static void main(String[] args) {
          new ForSchleife();
     }
}
 
Entsprechend Aufgabenstellung wäre das
Code:
        Integer Summe = 0;
        for (int i = 0; i <= 100; i++)
        {
            Summe += i;
            System.out.println(Summe);
        }

Allerdings verstößt das schon mal gegen die Java coding conventions, nach denen Variablennamen mit kleinem Buchstaben beginnen. Zudem ist es unnötig hier auf "Typ Integer" zu bestehen, aber ich vermute, der Aufgabensteller war da nicht so genau und meint eigentlich den primitiven Datentyp.

P.S.: Das ist eigentlich kein Hausaufgabenforum, gewöhne es dir daher besser gar nicht erst an, so etwas hier zu fragen. ;)
 
Ich hätte noch eine Frage. Wir sollen jetzt im zweiten Teil nur die Zahlen anzeigen lassen, die durch 7 teilbar sind und dabei den Modulo-Operator % verwenden....

Unsere Lösung sieht wie folgt aus:

public class For_Schleife {

/**
* @param args
*/
public static void main(String[] args) {
int Summe = 0;
for (int i=0; (Summe += i) <= 100; i++)
if (Summe % 7 == 0);
{


System.out.println(Summe);
}

}

}


Problem ist, das dann als Lösung 105 ausgegeben wird, anstatt 21, 28, 91.... hmm, weiß jemand woran das liegen könnte...
 
das Semikolon hinter der IF-Bedingung entfernen.

Auch wenn nur eine Anweisung in der For-Schleife enthalten ist, würde ich dennoch die geschweiften klammern hinzufügen. Führt oft zu problemen, wenn man später noch was in die Schleife hinzufügen möchte
 
Zuletzt bearbeitet:
Code:
if (Summe % 7 == 0);

Das Semikolon ist da fehl am Platz. Dein Code sieht grade so aus:

Code:
    int Summe = 0;
        for (int i = 0; (Summe += i) <= 100; i++)
            if (Summe % 7 == 0)
                ;
        {

            System.out.println(Summe);
        }

Das Semikolon schließt deinen IF Block ab. Die darauffolgende Klammerung hat also keine Wirkung. Gewöhn Dir am besten gleich an, immer Klammern richtig zu setzen...
 
Da hast du ein Klammerungs- und Semikolonproblem.
Der Schleifenkörper der for-Schleife ist nicht in geschweiften Klammern gesetzt, das heißt es wird nur die nächste Anweisung in der Schleife ausgeführt. Da du zusätzlich nach "if (Summe % 7 == 0)" noch ein Semikolon gemacht hast, wird die Ausgabe erste durchführt wenn die gesamte Schleife durchlaufen wurde.
Code:
public static void main(String[] args) {
    int Summe = 0;
    for (int i=0; (Summe += i) <= 100; i++) {
        if (Summe % 7 == 0) {
            System.out.println(Summe);
        }
    }
}
Gewöhn dir bitte an bei jeder Schleife und if-Anweisung geschweifte Klammern zu benutzen. So kann man solche Leichtsinnsfehler mal reduzieren.
 
Also bei diesem "(Summe += i) <= 100" im Schleifenkopf sollten bei jedem Programmierer die Alarmglocken regelrecht explodieren.
Wer sowas (oder Ähnliches) bei mir in einem Bewerbungsgespräch bringen würde, könnte direkt wieder gehen.

Zu deinem neuesten Code: Die Platzierung der Braces ist total wild, dazu das Semikolon hinter dem if.

Und verwende doch bitte mal code-Tags hier im Forum.
 
Mein Lösungsvorschlag:

Code:
public class Sum{
	public static void main(String[] args){
		
		int num = Integer.parseInt(args[0]);
		int Sum = 0;
		
		for(int i = 1; i <= num; i++){
			Sum += i;
			System.out.println("Iteration: "+i+", Summe: "+Sum);
		}
	}
}

Eingabe: java Sum 100
statt 100 kannst jetzt jede andere Zahl eingeben und dir aufsummieren lassen :D
 

Anhänge

  • Sum.jpg
    Sum.jpg
    253,3 KB · Aufrufe: 171
okay super, sorry, das ich jetzt hier danach gefragt habe, aber das Skript ist leider unvollständig... Okay das mit der geschweiften Klammer ist jetzt angekommen... danke euch nochmal...
 
OT: Schleifenkopf

character schrieb:
Also bei diesem "(Summe += i) <= 100" im Schleifenkopf sollten bei jedem Programmierer die Alarmglocken regelrecht explodieren.
Wer sowas (oder Ähnliches) bei mir in einem Bewerbungsgespräch bringen würde, könnte direkt wieder gehen.

Dann sollte ich dich besser nicht als Personalchef einstellen :lol:
Wie immer gibt es dort unterschiedliche Ansichten. So lieben die einen 1TBS, weil er kompakt und übersichtlich ist, die anderen verfluchen ihn als unlesbar.
In diesem speziellen Fall hier wurde nach einer möglichst kurzen Lösung gefragt. Zudem wird die Abbruchbedingung deutlich.
Aber auch ich kann hier einen gewissen schlechten Programmierstil nicht leugnen. Natürlich soll die Abbruchbedingung nicht zum ausführen einer Datenmanipulation missbraucht werden. In diesem Fall hier halte ich das dennoch für mehr als verzeihlich und definitiv kein Grund gegen eine Einstellung :o
 
Zuletzt bearbeitet:
Zurück
Oben