【发布时间】:2018-10-20 21:29:27
【问题描述】:
我正在为学校作业做一个复利课程。我尝试使用 System.out.format();并使用money.format 格式化变量investment、interest 和investTotal。我不知道为什么,但它一直给我一个错误 “格式说明符 '%.2f'、参数 2、3 和 4 的值类型 'String' 无效” 我已经尝试了很长时间,但我似乎仍然无法找到它的原因.
-- 一个
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// SPLASH
// CONSTANT
// OBJECT
Scanner input = new Scanner(System.in);
NumberFormat money = NumberFormat.getCurrencyInstance();
// VARIABLES
double investment;
double investTotal;
double rate;
double intrest;
int year;
// INPUT
do
{
System.out.print("Enter yearly investment (min $100.00 deposit): ");
investment = input.nextDouble();
}
while (investment < 100);
do
{
System.out.print("Enter intrest rate (%): ");
rate = input.nextDouble()/100;
}
while (rate <= 0);
do
{
System.out.print("Enter number of years: ");
year = input.nextInt();
}
while (year <= 0 || year > 15);
// PROCESSING
investTotal = investment;
for (int perYear = 1; perYear <= year; perYear++)
{
intrest = investTotal*rate;
investTotal = (investment+intrest);
System.out.format("%2s | %.2f | %.2f | %.2f\n", perYear, money.format(investment), money.format(intrest), money.format(investTotal));
investTotal = investTotal + investment;
}
// OUTPUT
}
}
【问题讨论】:
-
%.2f 需要一个数字。而且您正在传递一个字符串(因为 money.format() 返回一个字符串)。为什么要先用 money.format() 格式化数字,然后再尝试用 %.2f 格式化这个已经格式化的字符串?
标签: java for-loop netbeans system.out money-format