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