北漂老妖 2019-09-04 19:06 采纳率: 50%
浏览 225

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)

  • 写回答

1条回答 默认 最新

  • 毕小宝 博客专家认证 2019-09-05 09:04
    关注

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

    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

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器