Java Folgen und Reihen?

3 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet
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

RaBo129 
Beitragsersteller
 08.10.2019, 20:30

Also funktioniert das Ganze mit meinem bisherigen code nicht? Bin noch ein Beginner im Programmeiren, sprich habe 3 Wochen Erfahrung bis jetzt...

0
KarlRanseierIII  08.10.2019, 20:49
@RaBo129
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 ;-).

1
KarlRanseierIII  08.10.2019, 20:53
@KarlRanseierIII

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.

1
RaBo129 
Beitragsersteller
 08.10.2019, 20:58
@KarlRanseierIII

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?

0
KarlRanseierIII  08.10.2019, 21:04
@RaBo129

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.

1
RaBo129 
Beitragsersteller
 08.10.2019, 22:26
@KarlRanseierIII

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...:(((

0
KarlRanseierIII  08.10.2019, 22:36
@RaBo129
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.

1
RaBo129 
Beitragsersteller
 09.10.2019, 00:20
@KarlRanseierIII

Ohaaa vielen Dank!!! Hat funktioniert!!! Hilfreichste Antwort kommt!!! :DDD

0
  1. neue double Variable anlegen, die das Ergebnis speichert
  2. in einer for schleife aller Werte bis adder durchgehen und zur Variablen 1/Math.pow(i, 2) addieren
  3. 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