程序中的例外情况是读取不同硬币数量的文件并打印出总数

问题描述 投票:0回答:1

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

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;
        }
    }
java
1个回答
1
投票

您使用整数int sum = 0;来汇总您的值,同时使用$%f,用于格式化float。这就是你在这里获得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);
© www.soinside.com 2019 - 2024. All rights reserved.