# Zinseszins mit hilfe eines Arrays



## BlueK (15. Nov 2013)

Hallo zusammen, bin Java Einsteiger und neu hier im Forum. 
Habe folgendes Problem und zwar wirft mich mein Prof. mit folgender Aufgabenstellung ins kalte Wasser! :bahnhof:

Aufgabe:

In dieser und der nächsten Aufgabe soll die Entwicklung einer Geldanlage sowohl bei einfacher Verzinsung, als auch mit dem sogenannten Zinseszins analysiert werden. Zunächst ein Beispiel für einem Zinssatz von 10% und einer Anlagedauer von 4 Jahre:

                          Angelegt Betrag        Jahr 1          Jahr 2         Jahr 3         Jahr 4
Einfacher Zins                500                  550            600            650             700
Zinseszins                     500                  550            605            665,50         732,05



Implementieren Sie nun in einer Klasse InterestCalculation.java, welche in dem package blatt4 liegen soll, folgende Methoden:
public static double[] calculateInterest (double amount, int years, double interest, boolean isCompound)... Diese Methode erstellt ein Array vom Typ double, füllt es mit der Entwicklung des Anfangsbetrags amount, über die Laufzeit years, bei Zinssatz interest (in Prozent), und unter Berechnung der Verzinsungsart “einfache Verzinsung” (isCompound = false) oder “Zinseszins” (isCompound = true) und gibt das Array zurück.

Dabei wird in an der 1. Speicherstelle des Arrays -0.5 abgelegt, falls es sich um Zinseszins-Berechnung handelt, andernfalls -1. Weiterhin wird der Betrag an der 2. Speicherstelle des Arrays abgelegt. Die verzinsten Beträge der Folgejahre werden jeweils an Speicherstellen 3 bis x des Arrays gespeichert. Achtung: Arrays arbeiten 0-basiert, d.h. die 1. Speicherstelle hat Index 0! Folgende Sonderfälle sind mit einer Rückgabe von null zu behandeln:

• Betrag darf positiv oder negativ sein, aber nie 0.
• Die Dauer der Verzinsung muss mindestens 1 Jahr oder länger sein, dabei gehen wir immer von ganzen Jahren aus (also 1.5 Jahre o. ä. soll es nicht geben).
• Der Zinssatz ist als Fließkommazahl zwischen 0 (ausschließlich) und 1 (einschließlich) anzugeben (50% = 0.5). Andere Zinssätze sind nicht erlaubt.

Die 1. Zeile des Beispiels würde durch folgenden Aufruf erzeugt werden:
calculateInterest(500, 4, 0.1, false);

Die 2. Zeile hingegen würde durch folgenden Aufruf erzeugt werden:
calculateInterest(500, 4, 0.1, true);


Da ich neu bin und kaum Ahnung/Erfahrung mit Programmieren habe bin ich mit dieser Aufgabenstellung total überfordert. :autsch:


Ich hab mich mal daran versucht, der Programmcode (noch viele Lücken :rtfm: ) sieht bis jetzt folgendermaßen aus:


Kann mir bitte jemand sagen welche Teile richtig sind und/oder Verbesserungsvorschläge bzw. Tipps geben. 



```
package blatt4;


/**
 * 
 * @author 
 *
 */

public class InterestCalculation {


		
	public static double[] calculateInterest (double amount, int years, double interest, boolean isCompound){
		
		double[] array;
		if (isCompound = true) {
			array[0] = -0.5;
		}
		else { 
			array[0] = -1;
		}
		
		
	}


	
	
	
	public static double [][] compareInterests (double interest_1, int years_1, boolean isCompound_1,
												double interest_2, int years_2, boolean isCompound_2, double amount) {
		
		return ;
		
	}
	
	
	

}
```


----------



## Gucky (15. Nov 2013)

Der auf Gleichheit testende Vergleichsoperator lautet == und nicht = .

Die zweite Methode rufst du auf und springst dann mithilfe des returns sofort wieder heraus. Diese Methlde kann man genausogut auch entfernen, weil sie nichts tut.

Ferner solltest du viele Leerzeilen entfernen. Das macht deinen Code lesbarer.

Deinem Array wird kein richtiges Array zugewiesen. Du reservierst nur Platz für ein Array aber eins reinschreiben tust du nicht.

Wo wird die Variable isCompound deklariert?

Alles in Allem ist dein Code noch sehr unvollständig und aus diesem Schnipsel kann man nicht wirklich viel erkennen.


Das sind alles gut gemeinte Ratschläge.


----------



## ARadauer (16. Nov 2013)

BlueK hat gesagt.:


> Habe folgendes Problem und zwar wirft mich mein Prof. mit folgender Aufgabenstellung ins kalte Wasser! :bahnhof:



so ein schlimmer ;-)



BlueK hat gesagt.:


> double[] array;
> if (isCompound = true) {
> array[0] = -0.5;



stop... du musst das array initialisieren.., also zuweisen wie groß es ist...

zb so...
double[] array = new double[years];
sonst fliegt eine null pointer exception

mhn das kommt mir bekannt vor... 
http://www.java-forum.org/java-basics-anfaenger-themen/155943-fehler.html
ihr kennt euch oder?


----------

