【问题标题】:using the NumberFormat import in System.out.format在 System.out.format 中使用 NumberFormat 导入
【发布时间】: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


【解决方案1】:

getCurrencyInstance 返回一个字符串,因此无法使用 %.2f 进行格式化。

你最好看看 NumberFormat 是如何工作的: https://docs.oracle.com/javase/7/docs/api/java/text/NumberFormat.html

如您所见,格式化的结果是一个字符串,当您使用带有 %.2f 的 String.format 时,您应该输入一个数字,例如: System.out.format("%2s | %.2f\n", 1.001, 1.005);

我不确定您想使用 NumberFormat 获得什么,如果您进行分类,我将能够进一步帮助您解决这个问题。

【讨论】:

  • 谢谢。我想到了。我只是在输出一个表格,显示你投资了多少、费率、哪一年等等,但感谢你帮助我:)
猜你喜欢
  • 1970-01-01
  • 2015-05-18
  • 2019-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-10
  • 1970-01-01
相关资源
最近更新 更多