NumberFormatException,当尝试将字符串数组的内容转换为要存储在ArrayList中的Integer时

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

这是我当前的代码:

    ArrayList<String> arrayCurrency = new ArrayList<String>();
    ArrayList<Integer> arrayRate = new ArrayList<Integer>();
    ArrayList<String> arraySymbol = new ArrayList<String>();

public void loadFile() {

    File file = new File("C://Users//me//Documents//TestingAssignment//Assignment 2 Part 2//src/currency2.txt");

    try {
        BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF8"));

        String line = in.readLine().trim();

        while (line != null) {

            String[] parts = line.split(",");

            line = in.readLine(); 

            String currency = parts[0].trim();
            String rate = parts[1].trim();
            String symbol = parts[2].trim();


            int rateConverted = Integer.parseInt(rate);

            //int thisRate = rateConverted2;

            arrayCurrency.add(currency);
            arrayRate.add(rateConverted);
            arraySymbol.add(symbol);

        }

        for(String name:arrayCurrency) {
            System.out.println(name);
        }

        for(int name:arrayRate) {
            System.out.println(name);
        } 

        for(String name:arraySymbol) {
            System.out.println(name);
        } 

        in.close();

    } catch (Exception e) {

        String msg = e.getMessage();

        JOptionPane.showMessageDialog(null, msg);
    }

}

我已经通过调试器检查了代码。尝试转换文本文件中的第一个数字时会发生这种情况。

。txt文件的显示方式示例:

US Dollars,1.60,$

我想将其分成3个不同的数组。但是,我在尝试将parts[1].trim();转换为整数以便可以将其存储在ArrayList<Integer> arrayRate = new ArrayList<Integer>();中时遇到问题。

显示的错误消息是:“对于输入字符串:” 1.60“。

感谢您的帮助。谢谢。

java numberformatexception
1个回答
0
投票

如果只需要整数部分,可以这样做


0
投票

诸如“ 1.60”之类的数字应更好地表示为双精度,而不是整数。我建议您将数量arrayList更改为ArrayList<Double>并解析速率,如下所示:

© www.soinside.com 2019 - 2024. All rights reserved.