Aufsummieren

L

Luccí

Gast
Hallo zusammen,
ich bin neu in der Jave Programmierung und habe ein Problem mit einer Schleife. Ich glaube diese summiert nicht richtig auf

Java:
for (int t = 1; t <= T; t++) {
			KW = (Ct / Math.pow((1 + i1), t));
			KW = -I + KW1;
Die Laufzeit beträgt 3 Jahre, da ich t = 1 gesetzt habe wollte ich, dass KW sich dreimal berechnet, aufsummiert und danach noch I subtrahiert aber ich glaube ein fehler hat sich eingeschlichen und ich finde diesen nicht.

Wisst iher wo mein Fehler liegt


Für eure Hilfe wäre ich dankbar
 
Zuletzt bearbeitet von einem Moderator:

Volvagia

Top Contributor
Nicht böse gemeint, aber deine Variablenamen grenzen an Körperverletzung.
Ist es so geplant, dass in jedem Schleifendurchgang KW einen neuen Wert bekommt ohne den alten zu verwenden? (2 mal)
 
Zuletzt bearbeitet:
L

Luccí

Gast
Oh, ist ein Flüchtigkeitsfehler ist ne Grupppenarbeit die bis morgen fertig sein muss nur Leider lässt mich meine Gruppe im stich. Es geht im die Berechnung des Kapitalwert

Java:
public static double Summieren() {
		double I = 5000;
		double Ct = 1666.67;
		double T = 3;
		double i = 5;

		i = i / 100;

		double KW;
		for (int t = 0; t <= T; t++) {
			KW = (Ct / Math.pow((1 + i), t));
			KW = -I + KW;
			System.out.println("KW: " + KW);
 

Volvagia

Top Contributor
Wozu brauchst du die for? Hab zwar von Kapital keine Ahnung (alles was ich weiß ist "wenn einnamen > ausgaben dann ist es gut"), aber laut Google sollte das die Lösung für das Problem das sein:

Java:
public static double summieren() {
	double money = 1500;
	double time = 8;
	double p = 6;
	
	p = p / 100;
	
	money*= ((Math.pow(1 + p, time) - 1) / p);
	return(money);
}

Kapitalwertmethode
 

Mostly_Harmless

Aktives Mitglied
Du versuchst eine mathematische Formel 1 zu 1 in Java zu übernehmen. Das funktioniert so leider nicht ;)
Ich weiß zwar nicht, was der Kapitalwert genau ist, aber hier steht ja die Formel.

Was benötigen wir also für Variablen?
Zuerst brauchen wir mal die Betrachtungsdauer T.
Dann den Zahlungsstrom Z, der allerdings vom Zeitpunkt t abhängig ist. Also entweder sowas wie eine Funktion Z(t) oder - falls die Werte schon bekannt sind - ein Array Z[0..T], das mit den entsprechenden Werten initialisiert wird.
Außerdem brauchen wir die Investitionsausgabe I, wobei I = Z(0) und den Liquidationserlös L = Z(T).
Dann wollen wir den Kapitalwert C für einen bestimmten Zinssatz i berechnen.

Das Grundgerüst sieht dann so aus:

Java:
	int betrachtungsdauer = 3;
	double[] zahlungsstrom = new double[betrachtungsdauer + 1];

	double kapitalwert(double zinssatz) {
		double kapitalwert = 0;

		// -I
		// + Summe von t=1 bis T
		// + L * (1 + i)^(-T)

		return kapitalwert;
	}

Hierbei muss das Array natürlich noch mit Werten gefüllt werden.
Den ersten und zweiten Summanden gebe ich dir mal vor, die Summe bekommst du dann hoffentlich alleine hin:

Java:
	int betrachtungsdauer = 3;
	double[] zahlungsstrom = new double[betrachtungsdauer + 1];

	double kapitalwert(double zinssatz) {
		double kapitalwert = 0;

		// 1 + i
		double verzinsung = 1 + zinssatz;

		// -I
		kapitalwert = kapitalwert - zahlungsstrom[0];

		// + Summe von t=1 bis T
		double summe = 0;
		for (int t = 1; t <= betrachtungsdauer; t++) {
			// Berechnung der Summe...
		}
		kapitalwert = kapitalwert + summe;

		// + L * (1 + i)^(-T)
		kapitalwert = kapitalwert + zahlungsstrom[betrachtungsdauer] * Math.pow(verzinsung, -betrachtungsdauer);

		return kapitalwert;
	}
 

Marco13

Top Contributor
[ot]
Nicht böse gemeint, aber deine Variablenamen grenzen an Körperverletzung.

Ob das auch hier so ist, will ich nicht beurteilen, aber es gibt Fälle, wo es Sinn machen kann, so eine Körperveletzung zu begehen. Wenn man z.B. ein "etwas mathematischer angehauchtes Paper" nachimplementieren will, und da z.B. solche mathematikertypischen Variablennamen wie
7160b2b6ec8668ef64df12c96a837001.png
, Ableitungen wie dx/dy oder ganz clevere Sachen wie X* oder Y' vorkommen, kann es sinnvoll sein, die tatsächlich Bmn, dxdy, XStar oder YPrime zu nennen, statt sich dort krampfhaft irgendwelche Namen auszudenken (die es oft gar nicht wirklich gibt, weil die Namen eben nur das sind: Namen, eine Benennung eines Teils einer Formel, um ihn zu identifizieren :bahnhof: )

[/ot]
 

Volvagia

Top Contributor
[OT]Ja tut mir leid, ich drücke mich manchmal etwas unklar, grob, vielleicht sogar aggressiv - ich weiß nicht wie man das genau nennt - aus. Das ist keine Absicht und soll auf keinen Fall beleidigend etc. sein. Natürlich sind Namen wie x oder y auch sinnvoll, für Positionsangaben gäbe es wohl auch nichts besseres. Es kommt dabei aber imho immer auf den Kontext an. Bei x oder y denken wohl die meisten Programmierer sofort an eine Position in einen Raster, aber (meiner Meinung nach, kann sein dass das jemand anders ganz anderst empfindet) die meisten Variablennamen erhalten ihren Sinn erst im Zusammenhang mit der Methode, diese enthält ihren Sinn erst im Zusammenhang mit der Klasse und diese mit dem Package oder dem ganzen Projekt. Wenn dieser Kontext nicht bekannt ist (oder in diesen Fall die Formel, falls die Variablenamen wirklich aus einer Formel entnommen wurden) ist es sehr schwer, diese nachzuvollziehen. Deshalb wollte ich auf die Variablen hinweißen, das (leider wie öfters :() total falsch rüberkam.[/OT]
 

Ähnliche Java Themen

Neue Themen


Oben