在 System.out.format 中使用 NumberFormat 导入
using the NumberFormat import in System.out.format
我正在为学校作业做一个关于复利的程序。我尝试使用 System.out.format();并使用 money.format 格式化变量 investment、interest 和 investTotal。我不知道为什么,但它一直给我一个错误
"Invalid value type 'String' for format specifier '%.2f', parameter 2, 3, and 4" 我已经尝试弄清楚这个问题已经有一段时间了,但我似乎仍然无法找到原因。
-- 一个
/**
* @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 0.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
}
}
getCurrencyInstance returns 一个字符串,因此无法使用 %.2f 进行格式化。
你最好看看 NumberFormat 是如何工作的:
https://docs.oracle.com/javase/7/docs/api/java/text/NumberFormat.html
如您所见,格式化的结果是一个字符串,当您将 String.format 与 %.2f 一起使用时,您应该输入一个数字,例如:
System.out.format("%2s | %.2f\n", 1.001, 1.005);
我不确定你想使用 NumberFormat 得到什么,如果你分类我将能够进一步帮助你解决这个问题。
我正在为学校作业做一个关于复利的程序。我尝试使用 System.out.format();并使用 money.format 格式化变量 investment、interest 和 investTotal。我不知道为什么,但它一直给我一个错误 "Invalid value type 'String' for format specifier '%.2f', parameter 2, 3, and 4" 我已经尝试弄清楚这个问题已经有一段时间了,但我似乎仍然无法找到原因。
-- 一个
/**
* @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 0.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
}
}
getCurrencyInstance returns 一个字符串,因此无法使用 %.2f 进行格式化。
你最好看看 NumberFormat 是如何工作的: https://docs.oracle.com/javase/7/docs/api/java/text/NumberFormat.html
如您所见,格式化的结果是一个字符串,当您将 String.format 与 %.2f 一起使用时,您应该输入一个数字,例如: System.out.format("%2s | %.2f\n", 1.001, 1.005);
我不确定你想使用 NumberFormat 得到什么,如果你分类我将能够进一步帮助你解决这个问题。