【问题标题】:I cant add a dollar sign after the formatted number (Java)我无法在格式化数字后添加美元符号(Java)
【发布时间】:2020-04-26 18:36:50
【问题描述】:

当我尝试将数字减少到第二个小数点时,我似乎无法弄清楚为什么这段代码总是给我与格式相关的错误,同时还在它们后面添加“$”。

Scanner scan = new Scanner(System.in);
int months = scan.nextInt();
int waterPrice = 20;
int internetPrice = 15;
int water = months * waterPrice;
int internet = months * internetPrice;
double others = 0;
double electricity = 0;
double electricityPrice;

for(int i=0; i<months; i++){
    electricityPrice = scan.nextDouble();
    electricity += electricityPrice;
    others = (electricity + water + internet) + 0.2 * (electricity + water + internet);

}
double avarage = (electricity + water + internet + others)/5;

System.out.println("Electricity: %.2f$$"+ electricity);
System.out.printf("Water: %.2d$$", water);
System.out.printf("Internet: %.2d$$", internet);
System.out.printf("Other: %.2f$$", others);
System.out.printf("Average: %.2f$$", avarage);        

【问题讨论】:

  • 我建议你去掉显示问题所需的最少代码。并报告确切的错误。

标签: java formatting


【解决方案1】:

试试:

System.out.format("Electricity: %.2f $$\n", 234.5554);

System.out.printf("Electricity: %.2f $$\n", 234.5554);

输出:

在你的情况下:

System.out.printf("Electricity: %.2f$$\n", electricity);
System.out.printf("Water: %d$$\n", water);
System.out.printf("Internet: %d$$\n", internet);
System.out.printf("Other: %.2f$$\n", others);
System.out.printf("Average: %.2f$$\n", avarage);

输出:

注意:在您的情况下,我已将 %.2d 替换为 %d,因为 waterinternet 属于 integer 类型。如果你想要所有的小数精度,即100.00 $$,那么你需要用double替换int并使用System.out.printf(%.2f$$\n)

【讨论】:

  • 您需要在末尾添加\n 才能将光标移动到新行。否则,您将在同一行打印出所有内容。 System.out.printf("Electricity: %.2f $$\n", 234.5554);
  • 不,我需要 100.00 美元,而不是 100 美元的水费和网络费
  • @MickeyMoise 只使用上面提到的 %.2f$$
  • @MickeyMoise 在这种情况下,您需要将水和互联网的类型更改为双倍并使用 %.2f$$。在此类应用程序开发中使用类似类型的数据始终是一种好习惯。希望对你有效。如果您遇到问题,请告诉我。
  • @Dcoder 仅使用 %.2f$$ 将不起作用。它会抛出异常。水和互联网的数据类型也需要改变
【解决方案2】:

您正在使用System.out.println(),这对于格式化输出没有用处。它将输出连接到单个字符串并显示它。

对于您想要的格式化输出,请使用类似于 C printf() 函数的Syatem.out.printf()

您也可以使用String.format() 进行格式化输出。

例子:

Syatem.out.printf("Electricity: %.2f$$", electricity)
System.out.println("Electricity: " + String.format("%.2f$$", electricity))

【讨论】:

  • 你为什么要做第二个呢? (另外,您可能希望在第一个末尾添加%n
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-04
  • 1970-01-01
  • 1970-01-01
  • 2022-01-07
  • 2013-10-14
  • 1970-01-01
相关资源
最近更新 更多