Java Zahlensequenz mit while-Schleife ausgeben

Tesla_94

Newbie
Registriert
Okt. 2020
Beiträge
4
Hallo,

ich muss ein Programm schreiben, dass zwar die gleiche Zahlensequenz ausgibt, die Länge dieser aber abhängig vom Input in die Konsole ist. Beispiel bei Eingabe 5 = (0,1,4,9,16).

Aktuelles Programm

Code:
public class Ex2 {
    public static void main(String [] args){

        int i = 1; //i muss bei 1 starten, da 0->1
        int sNum = 0; // Beginn ab 0
        int eNum = Terminal.readInt("Provide a number"); //Konsoleneingabe


        while(sNum <= eNum){
            sNum ++;
            i = i + 2;
            sNum = sNum + i;
        }
        System.out.print(sNum);

    }
}

Leider komme ich aber nicht weiter und die Ausgabe ist Unfug, so wie wahrscheinlich der Code^^

Hoffe auf Unterstützung!

Grüße
 
Ich frage mich warum du "i" überhaupt nutzt, und nicht einfach "sNum = sNum + 1;" machst z.B.

//grad gemerkt, Blindheit und so, i wird ja direkt in der Zeile darüber auch benutzt.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Tesla_94
Gib mal Zeile 14 in die Schleife.
 
  • Gefällt mir
Reaktionen: Tesla_94 und Asghan
So berechnet man doch keine Quadratzahlen?
 
  • Gefällt mir
Reaktionen: Tesla_94
Entweder musst du einen Vector erstellen, welcher deine int-Werte aufnimmt und diesen ausgeben, oder einen Typecast zu String machen, dass du deinen String ausgibst und diesen durch die zusätzlichen Zahlen addierst.

So gibst du einfach als Ausgabe die Summe der Schleifen wieder
 
  • Gefällt mir
Reaktionen: Tesla_94
Danke für die Tipps, i habe ich entfernt und der Tipp mit den Quadratzahlen hat mir viel Denkarbeit erspart. Habe etwas annehmbares zusammengeschustert ^^

Code:
public class Ex2 {
    public static void main(String [] args){

        int sNum = 0;
        int eNum = Terminal.readInt("Provide a number");
        int result;

        while(sNum <= eNum - 1){

            result = sNum * sNum;
            System.out.print(result);
            System.out.print(" ");
            sNum ++;
        }

    }
}
 
Elegant geht sowas übrigens mit java.util.IntStream. Falls Du mal in Richtung funktionaler Programmierung schauen möchtest. Ist dann nur eine Zeile...
 
  • Gefällt mir
Reaktionen: Tesla_94
Konkret so:
Java:
import java.util.stream.Collectors;
import java.util.stream.IntStream;
// import Terminal

public class Main {
 public static void main(String[] args) {
  System.out.println(IntStream.range(0, Terminal.readInt("Provide a number"))
                     .mapToObj(i -> Integer.toString(i*i))
                     .collect(Collectors.joining(", ", "(", ")")));
 }
}
Geht ab Java 8 und kann man auch in eine Zeile quetschen, gibt dann aber bestimmt Punktabzug wegen schlechter Lesbarkeit. ;)
 

Ähnliche Themen

Zurück
Oben