Erste Schritte Schleifenausgabe

Hallo zusammen,
will hier eine vielleicht etwas peinliche Frage stellen, aber bin neu in der Programmierung und blicke es einfach nicht (trotz google).
Aufgabe ist das hier:

"Der Algorithmus
1. Lies den Wert von n ein.
2. Setze i auf 3.
3. Solange i < 2n, wiederhole: Erhöhe i um 1 & Gib 1/2*i+1 aus
soll auf drei verschiedene Arten implementiert werden: Schreiben Sie jeweils
ein Java-Programmstück, das diesen Algorithmus als while-, als for- und als
do-while Schleife realisiert" Die Aufgabe stammt aus "Grundkurs Programmieren in Java8"
Das Package IOTools erledigt nur die Eingabe der Werte in der Konsole.

Habe schon zwei Arten von Schleifen geschrieben (siehe Anhang) die mir aber irgendwie nie die richtigen Ergebnisse auswerfen. Vielleicht bin ich ja blind aber vielleicht kann mir hier jemand helfen.
Viele Grüsse
Dave
 

Anhänge

  • schleifen.txt
    1,2 KB · Aufrufe: 6

Robat

Top Contributor
Moinsen,

poste deinen Quellcode mal bitte hier im Forum mit den Code-Tags. Einfügen --> Code --> Java. Bzw gleich mit den Tags
[ code = Java]
code..
[/ code] (nur ohne die Leerzeichen)

Das lässt sich besser lesen und man kann dir schneller helfen.

Gruß
Robert
 
Hallo,

sorry wusste nicht, dass das geht.
Ich versuche das mal.
VG David
Java:
// Versuch mit while Schleife
package iotoolsimport;
import static Prog1Tools.IOTools.*;

public class Aufgabe4_20_1 {

    public static void main(String[] args){
       
        int n;
        int i;
       
        //int-Eingabe mit Prompt
        System.out.print("n = ");
        n = readInteger();
        i = 3;

        while(i<(2*n)){
            i++;
            int ergebnis = 1/((2*i)+1);
            System.out.println(ergebnis);
            }
      }
}
// Versuch mit for Schleife
package iotoolsimport;
import static Prog1Tools.IOTools.*;

public class Aufgabe4_20_2 {

    public static void main(String[] args){

        //int-Eingabe mit Prompt
        int n;
        System.out.print("n = ");
        n = readInteger();

        for(int i=3;i<(2*n);i++){
            float ergebnis = 1/((2*i)+1);
            System.out.println(ergebnis);
        }      
      }
}
 

JStein52

Top Contributor
while(i<(2*n)){
i++;
int ergebnis = 1/((2*i)+1);
System.out.println(ergebnis);
}
Du kriegst als Ergebnis wahrscheinlich immer 0 ?!
Du solltest das Ergebnis vom Typ double machen und rechnen : 1.0/((2.0*(double)i)+1.0)
Denn als Integerdivision ergibt 1/<irgendeineZahlGrösserEins> immer 0
Und sollst du das i vor der ergebnisberechnung inkrementieren oder erst danach ?
 
Hallo JStein,

danke für deine Antwort.
ja genau ich bekomme immer 0 als Ergebnis & wenn ich es mit dem Taschenrechner oder Excel durchrechne merke ich, dass was nicht stimmt.
Also die Erhöhung um 1 soll vor der Rechnung erfolgen. Ich habe nun nochmals etwas rumprobiert und "einfach" alles vom typ "double" gemacht.
Java:
package iotoolsimport;
import static Prog1Tools.IOTools.*;

public class Aufgabe4_20_1 {

    public static void main(String[] args){
       
        double n;
        double i;
       
        //int-Eingabe mit Prompt
        System.out.print("n = ");
        n = readInteger();
        i = 3.0;

        while(i<(2.0*n)){
            i++;
            double ergebnis = 1.0/((2.0*i)+1.0);
            System.out.println(ergebnis);
            }
      }
}
Ich bin echt ein Horst, hatte gestern versucht mittelt Math.pow weitere Kommastellen zu erzwingen. Nun geht es und es zeigt mir alle Kommastellen an.
Vielen Vielen Dank schon mal :) Grüsse aus Züri
 


Schreibe deine Antwort... und nutze den </> Button, wenn du Code posten möchtest...

Neue Themen


Oben