# Problem mit Code (Annuitätenrechner)



## Rani22 (19. Apr 2009)

Hallo,

bin gerade dabei mir nen Annuitätenrechner zu basteln und bekomme leider immer folgende Fehlermeldung:


```
Exception in thread "main" java.util.IllegalFormatConversionException: d != java.lang.Double
	at java.util.Formatter$FormatSpecifier.failConversion(Unknown Source)
	at java.util.Formatter$FormatSpecifier.printInteger(Unknown Source)
	at java.util.Formatter$FormatSpecifier.print(Unknown Source)
	at java.util.Formatter.format(Unknown Source)
	at java.io.PrintStream.format(Unknown Source)
	at java.io.PrintStream.printf(Unknown Source)
	at Finanzrechnung.annuitaetentilgung(Finanzrechnung.java:119)
	at Finanzrechnung.auswahlmenue(Finanzrechnung.java:216)
	at Finanzrechnung.main(Finanzrechnung.java:225)
```


Der Code:


```
public void annuitaetentilgung ()
	{	
		double merker = 1;
		double temp2 = 0;
		double tilgung = 0;
		double zinsen = 0;
		double annuitaet = 0;
		Scanner annuitaetenScanner = new Scanner(System.in);
		
		System.out.printf("Bitte Summe angeben: \n");
		double darlehen = annuitaetenScanner.nextDouble();
		
		System.out.printf("Bitte Zinssatz angeben: \n");
		double zinssatz = annuitaetenScanner.nextDouble();
		
		System.out.printf("Bitte Anzahl der Jahre angeben: \n");
		int laufzeit = annuitaetenScanner.nextInt();
			
	    for(int i=0; i<laufzeit; i++)
	    {
	        temp2 = merker * ((zinssatz/100)+1);
	        merker = temp2;
	        System.out.printf("%d", merker);
	    }
	    
	    annuitaet = (merker * (((zinssatz/100)+1)-1)/(merker-1))*darlehen;
	    
	    System.out.printf("Annuitaet           : %10.2lf EUR \n", annuitaet);
	    System.out.printf("Monatliche Kosten   : %10.2lf EUR \n\n\n", annuitaet/12);
	    	    
	    for(int i=0; i<laufzeit; i++)
	    {
	        zinsen = (darlehen-tilgung)/100*zinssatz;
	        darlehen = darlehen-tilgung;
	        tilgung = annuitaet-zinsen;
	        System.out.printf("Im %2d. Jahr: %10.2lf Zinsen, %10.2lf Tilgung \n", i+1, zinsen, tilgung);
	    }
}
```


----------



## SlaterB (19. Apr 2009)

was bringt es nun, einen Code mit geschätzt 5000  System.out.printf-Ausgaben zu posten und nicht zu sagen, welche die Fehlermeldung auslöst?

die einzig erlaubte Art, System.out.printf zu testen ist


```
public static void main(String[] args) {
  int x = 3;
  float f = 4;
  double d = 5;
  System.out.println("x ist [was auch immer für ein Format, hier einfügen]", x);
  System.out.println("f ist [was auch immer für ein Format, hier einfügen]", f);
  System.out.println("d ist [was auch immer für ein Format, hier einfügen]", d);
}
```

denn irgendwas formatierst du falsch, z.B. 
 System.out.printf("%d", merker);
d steht nicht für double, wenn ich das richtig erinnere, ohne es jemals zu verwenden


----------



## tfa (19. Apr 2009)

> double merker = 1;
> System.out.printf("%d", merker);


Das geht nicht.
%d steht für "decimal integer". Double ist ein Fließkommawert, hierfür musst du %f nehmen.


----------



## Rani22 (19. Apr 2009)

hi, erstmal danke.

habs grad auf lf umgeändert und er bringt leider imma no die selbe fehlermeldung...


Exception in thread "main" java.util.UnknownFormatConversionException: Conversion = 'l'
	at java.util.Formatter$FormatSpecifier.conversion(Unknown Source)
	at java.util.Formatter$FormatSpecifier.<init>(Unknown Source)
	at java.util.Formatter.parse(Unknown Source)
	at java.util.Formatter.format(Unknown Source)
	at java.io.PrintStream.format(Unknown Source)
	at java.io.PrintStream.printf(Unknown Source)
	at Finanzrechnung.annuitaetentilgung(Finanzrechnung.java:118)
	at Finanzrechnung.auswahlmenue(Finanzrechnung.java:215)
	at Finanzrechnung.main(Finanzrechnung.java:224)


----------



## tfa (19. Apr 2009)

Wofür soll denn das l stehen?


----------



## Rani22 (19. Apr 2009)

ok gut habs rausgekriegt...

bin von c auf java umgestiegen und in c nimmt ma für double %lf her... in java nur %f.

danke für die netten und schnellen antworten.

kann geschlossen werden


----------

