gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 10:56:15 24 4
gpt4 key购买 nike

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

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; 对值求和,同时使用 $%f,它用于格式化 float >。这就是您在此处收到 IllegalFormatConversionException 的原因。

我认为您的意图是使用浮点值,如您的方法 double countMoney 所示,因此我建议您将 sum 更改为 double也是如此。否则,您将遭受值(value)损失。

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);

关于java - 程序中读取不同硬币数量并打印总数的文件时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51708030/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com