Methoden Wo ist mein Fehler ?!

JanFausO

Mitglied
Die Aufgabe war, eine Methode mit einem double-Array zu erstellen, der die Verzinsung ohne und mit Zinseszins ausgibt. Leider gibt mir der return am Ende den Betrag nicht wieder und ich weiß nicht wieso.
Hoffe mir kann jemand helfen.:bahnhof:

Java:
package blatt4;

public class InterestCalculation {
	
	public static void main (String[] args){
		System.out.println("Anfangswert: ");
		System.out.println("Zinsenentwicklung bei einfacher Verzinsung: " + calculateInterest(500, 4, 0.1, false));
		System.out.println("Anfangswert: ");
		System.out.println("Zinsenentwicklung Zinseszins: " + calculateInterest(500, 4, 0.1, true));
		
		
	}
	
	
	public static double [] calculateInterest(double amount, int years, double interest, boolean inCompound){
		
		//Bedingung: Betrag (amount) darf nicht null sein.
		if (amount == 0)
			return null;
		//Bedingung: Nur volle Jahre.
		if (years < 1)
			return null;
		//Bedingung: Zins zwischen 0 und 1.
		if(interest <= 0 && interest > 1)
			return null;
		
		for (years = 0; years <= 4; years++){
			
			amount = amount + years * (amount * (1 + interest));
			
		return amount;
		}
	}
}
 
Zuletzt bearbeitet:
Das sollte nicht mal kompilieren.
Java:
public static double [] calculateInterest

und du returns einen double, kein Array.
 
Dann hast du meine erste Aussage gekonnt ignoriert.
Du sagst im Methodenkopf, dass du ein double[] zurückgibst, gibst aber amount (einen double) zurück.
Ein double-array ist kein double. Deswegen type-mismatch. Entweder änderst du den Rückgabetyp oder du gibsst nicht amount zurück, sondern ein double[].
 
Dann hast du meine erste Aussage gekonnt ignoriert.
Du sagst im Methodenkopf, dass du ein double[] zurückgibst, gibst aber amount (einen double) zurück.
Ein double-array ist kein double. Deswegen type-mismatch. Entweder änderst du den Rückgabetyp oder du gibsst nicht amount zurück, sondern ein double[].

Ja okay gut, das double [] war vorgeschrieben. Also muss ich dann wohl auch double[] zurück geben ...
Ich probiere mal mein Glück vielen Dank schon mal !!
 
Wenn das so vorgegeben ist, dann würde ich sagen, dass du die Zinsen für jedes Jahr in eine Zelle eines Array schreiben und das zurückgeben sollst.
 
sehr naheliegend dass du das kapital für jedes jahr zurück geben sollst... deshalb wird ein array vorgegen sein.
mach ein array und schreib die werte rein...

btw.. quatsch... du übergibst als parameter years, setzt sie auf 0 und verwendest dann 4... wieso?
for (years = 0; years <= 4; years++){ ??

und return bricht die methode ab, dass muss raus aus dem for

zb so...

Java:
public static double[] calculateInterest(double amount, int years, double interest, boolean inCompound) {
		double[] result = new double[years]; // Ergebnis array mit der anzahl der jahre machen...

		// Bedingung: Betrag (amount) darf nicht null sein.
		if (amount == 0)
			return null;
		// Bedingung: Nur volle Jahre.
		if (years < 1)
			return null;
		// Bedingung: Zins zwischen 0 und 1.
		if (interest <= 0 && interest > 1)
			return null;

		for (int currentYear = 0; currentYear < years; currentYear++) {

			amount = amount + years * (amount * (1 + interest));
			result[currentYear] = amount; // für jedes jahr das ergebnis rein schreiben

		}
		return result; //zurück geben
	}
 
Ich schreib mal die Aufgabe hin:

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 Ruckgabe von null zu behandeln:

#1. Betrag darf positiv oder negativ sein, aber nie 0.

#2. 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.a. soll es nicht geben).

#3. Der Zinssatz ist als Fließkommazahl zwischen 0 (ausschließlich) und 1 (einschließlich) anzugeben
(50%= 0.5). Andere Zinssatze sind nicht erlaubt.

Die dunkel-orangene Zeile des Beispiels wurde durch folgenden Aufruf erzeugt werden:
calculateInterest(500, 4, 0.1, false);
Die hell-orangene Zeile hingegen wurde durch folgenden Aufruf erzeugt werden:
calculateInterest(500, 4, 0.1, true)



Es ist ja so, dass ich das Ergebnis über einmal die Verzinsung mit Zinseszins und einmal mit einfacher Verzinsung ausgeben soll, und es nicht reinschreiben soll.:-(
 

Zurück
Oben