Java Folgen und Reihen?
Hallo zusammen!!!
Ich schreibe gerade an einem Programm für den Unterricht, wobei mir folgene Frage aufkam: Wie kann ich die Summe aus x zahlen berechnen, wenn dies durch einen Scanner geschieht, z.B. gebe ich die Zahl 5 ein und java rechnet mir dann die Summe aus: 1 + 2 + 3 + 4 + 5 zusammen...
Folgenden code habe ich bereits erstellt:
public class Reihe {
public static void main(String[] args) {
Scanner myConsole = new Scanner(System.in);
System.out.println("Dieses Programm ermöglicht das Berechnen der Summe aus den Brüchen: 1/1^2+1/2^2+1/3^2+1/N^2") ;
System.out.print("Geben Sie ihre Zahl ein");
int adder = myConsole.nextInt();
if (adder == 0) //Programm muss bei der Eingabe von 0 0.0 ausgeben, ansonsten das Resultat auf 2 Stellen nach Komma...
System.out.println("0.0");
else
for (int i = adder; i == adder; i = i+1) {
System.out.println();
}
}
}
Ich muss nähmlich dies für folgendes Problem lösen: 1 / N^2 (gleiches Prinzip nur mit Bruch...
Ich hoffe mir kann jemand beim Schema helfen, so dass ich es für mein Problem übernehmen kann!!! Möchte selber noch auf die Lösung kommen :)))
Vielen Dank bereits im Vorraus!!!
Gruss
3 Antworten
sum=0
maxval=userinp()
for(i=1;i<=maxval;++i) sum+=i
Pseudocode - man kann das natürlich auch mit einer while-Schleife machen, oder den Iterator rückwärts laufen lassen:
for(i=maxval;i>0;--i) sum+=i
for (int i = adder; i == adder; i = i+1)
Beginne bei i=adder, Prüfe ob i==adder ist und solange dem so ist, führe Schleifenkörper aus und setze i=i+1 ...
Das ist eben nicht ganz das, was DU wohl gerne hättest.
i sill ja systematisch Deien Werte durchlaufen, ebenso wie Du es ans Summenzeichen schreiben würdest - die Ähnlichkeit ist frappierend ;-).
Meh, blöde Zeitbegrenzung. Es soll natürlich lauten: i soll ja systematisch Deine Werte durchlaufen.
Und ob ich nun einen Summand wie hier das i nehme, oder z.B. i*i, oder 1/i, oder ... ist dann Jacke wie Hose.
for (int i = adder; i > 0; i = i+1) {
Habe es nun einmal so abgeändert... also irgendwie habe ich das Ganze noch nicht verstanden...
Könntest du mir vielleicht zeigen, wie das Ganze nur mit simplen Additionen läuft? Sprich wenn ich die 5 eigebe, dass er mir 1+2+3+4+5 rechnet?
Für die simple Addition habe ich ja beide Varianten gezeigt, Du bist näher dran..
Wenn Du bei adder, also der oberen Schranke startest, dann möchtest Du rückwärts laufen, also adder, adder-1, adder-2... adder=1 (oder adder=0, je nachdem wie die Grenze lautet). Also sollte da natürlich i=i-1 stehen, damit DU die Werte von i rückwärts von oben nach unten durchläufst.
public static void main(String[] args) {
var myConsole = new Scanner(System.in);
System.out.print("Geben Sie ihre Zahl ein");
double N = myConsole.nextInt();
if (N == 0)
System.out.println("0.0");
for(double i = N; i == N; i = i-1) {
System.out.println(1/(N*N));
Somit komme ich auf den Bruch, jedoch nicht auf das eigentliche Resultat...
Könnten Sie mir nicht sagen, wo ich was eingeben muss, damit ich das Resultat habe? Habe nun schon Stunden gesucht und irgendwie klappt es nie...:(((
for(double i = N; i == N; i = i-1) {
System.out.println(1/(N*N));
Stattdessen (ich spreche kein solides Java, daher mit Vorbehalt):
double sum=0.0;
for (int i=N; i>0; i=i-1){
sum+=1.0/(i*i);
System.out.println("Summe: "+sum+" Glied: "+1/(i*i));
}
oder eben, wenn es aufsteigend sein darf:
double sum=0.0;
for (int i=1; i<=N; i=i+1){
sum+=1.0/(i*i);
System.out.println("Summe: "+sum+" Glied: "+1/(i*i));
}
Ich hoffe, daß Java durch das 1.0 eine Type Promotion zu Fliekomma ausführt.
Ohaaa vielen Dank!!! Hat funktioniert!!! Hilfreichste Antwort kommt!!! :DDD
- neue double Variable anlegen, die das Ergebnis speichert
- in einer for schleife aller Werte bis adder durchgehen und zur Variablen 1/Math.pow(i, 2) addieren
- Ergebnis ausgeben
Hi kannst du in zukunft bitte code in code boxen packen danke
import java.util.*;
/*Please dont change class name, Dcoder
and class must not be public*/
//Compiler version JDK 1.8
class Dcoder
{
static String zahl = "12345";
private static int calculate(){
int ergebniss=0;
for(int i=0; i<zahl.length(); i++){
ergebniss+=Integer.valueOf(zahl.substring(i,i+1));
}
return ergebniss;
}
public static void main(String args[])
{
System.out.println(calculate()+"");
}
}
Sorry fürs schlechte einrücken das +"" und den scheiß mit static
Bin aber nur am handy und will nicht ewig tippen
Also funktioniert das Ganze mit meinem bisherigen code nicht? Bin noch ein Beginner im Programmeiren, sprich habe 3 Wochen Erfahrung bis jetzt...