Java核心技术 Retirment试数程序报错

package cn.think.java;

import java.util.Scanner;

public class Retirment_2 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);

System.out.print("How much money will you contribute every year ?");
double payment = in.nextDouble();

System.out.print("Interestrate in % : ");
double interestRate = in.nextDouble();

double balance = 0;
int year = 0;

String input;

do {
balance += payment;
double interest = balance * interestRate / 100;
balance += interest;

year++;

System.out.printf("After year %d , your balance is %,2.f%n", year, balance);

System.out.print("Ready to retire ? (Y / N)");
input = in.next();

}while(input.equals("N"));
}

}

程序报错


Error:
How much money will you contribute every year ?10000
Interestrate in % : 0.2
Exception in thread "main" java.util.UnknownFormatConversionException: Conversion = ','
at java.util.Formatter.checkText(Formatter.java:2579)
at java.util.Formatter.parse(Formatter.java:2555)
at java.util.Formatter.format(Formatter.java:2501)
at java.io.PrintStream.format(PrintStream.java:970)
at java.io.PrintStream.printf(PrintStream.java:871)
at cn.think.java.Retirment_2.main(Retirment_2.java:27)

字符串格式化的用法错误了:有三个 % 占位符,但是只给了两个参数,另外,第二个% 后面的 , 不识别,去掉,改成这样试试:

System.out.printf("After year %d , your balance is %.2f\n", year, balance);

试了下这个.2f 保留两位,可以。

How much money will you contribute every year ?200.50
Interestrate in % : 10
After year 1 , your balance is 220.55

需要研究一下字符串格式化的语法:https://blog.csdn.net/weixin_44246503/article/details/86088223