读取不同硬币数量的文件并打印出总数的程序出现异常



我正在编写一个程序,该程序从文件中读取并打印出所代表的金额。例如,我的输入文件的文本是

3 pennies
2 quarters
1 pennies
23 nickels
4 dimes

该程序应该计算出总金额并打印出来。当程序编译时,我得到了异常IllegalFormatConversionException。我怀疑我错误地检查了字符串(硬币名称(,但我不确定如何修复程序。我希望得到一些指导。这是我的代码:

import java.util.Scanner;
import java.io.*;

public class CountCoins {
public static void main (String [] args) throws IOException {
Scanner input = new Scanner(new FileReader("input.txt"));
int sum = 0;
while (input.hasNextLine()) {
int number = input.nextInt();
String coin = input.next();
sum += countMoney(number, coin);
}
System.out.printf("Total money = $%f n", sum);
}
public static double countMoney(int num, String coin) {
if (coin.equals("pennies")) {
return num * 0.01;
}
else if (coin.equals("nickels")) {
return num * 0.05;
}
else if (coin.equals("dimes")) {
return num * 0.10;
}
else if (coin.equals("quarters")) {
return num * 0.25;
}
return 0;
}
}

您使用整数int sum = 0;对值求和,而使用用于格式化float$%f。这就是你在这里得到IllegalFormatConversionException的原因。

我认为您在这里的意图是使用浮点值,正如您的方法double countMoney所示,所以我建议您也将sum更改为double。否则,您将遭受价值损失。

double sum = 0;
while (input.hasNextLine()) {
int number = input.nextInt();
String coin = input.next();
sum += countMoney(number, coin);
}
System.out.printf("Total money = $%f n", sum);

最新更新