防止添加ArrayList

时间:2014-06-06 17:23:23

标签: java arraylist

在我的程序中,我将CAD转换为美元作为一个例子,当我加入10加元时,我得到9.14美元的回报,这是正确的。但在那之后,例如我添加50加元并转换它,它将显示60加元是54.86美元,它应该转换只有50加元而不是60.这是因为arraylist中的数字是添加,不知道该怎么办?

enter image description here enter image description here

这是一个照片示例

private void addButtonActionPerformed(java.awt.event.ActionEvent evt) {
    double moneyValue = Double.parseDouble(moneyInput.getText());
    int type = Integer.parseInt(typeInput.getText());
    double conversion;
    initialMoney.add(moneyValue);

    if (moneyValue < 0){
        errorLabel.setText("Value added is negative, please try again.");
    }
    else if(type < 1 || type > 20){
        errorLabel.setText("An error has occurred, please try again.");
    }
    else if (moneyValue > 0){
        if (type == 1){
            conversion = initialCADtofinalUSD(moneyValue);
            finalMoney.add(conversion);
        }
        else if (type == 2){
            conversion = initialCADtofinalEUR(moneyValue);
            finalMoney.add(conversion);
        }
        else if (type == 3){
            conversion = initialCADtofinalCNY(moneyValue);
            finalMoney.add(conversion);
        }
        else if (type == 4){
            conversion = initialCADtofinalGBP(moneyValue);
            finalMoney.add(conversion);
        }

这是输出的地方

    for (int i = 0; i < initialMoney.size(); i++){
        initialMoneyOutput += initialMoney.get(i);
        finalMoneyOutput += finalMoney.get(i);
    }

    DecimalFormat x = new DecimalFormat("0.00");

    textAreaOutput.append("$" + x.format(initialMoneyOutput) + initialCurrencyAcronym + " is $" + x.format(finalMoneyOutput) + finalCurrencyAcronym + "\n");

3 个答案:

答案 0 :(得分:0)

如果将整数存储在列表中,则ArrayList本身不会添加整数。 每个整数都是ArrayList中的新Int对象,并且与其他值无关。 实现中可能存在一些错误。 您能否发布您正在使用的代码段?

答案 1 :(得分:0)

在输出它的for循环之前将initialMoneyOutput和finalMoneyOutput初始化为0。

另外,为什么还需要在for循环中添加所有初始货币值。 只需获取最新的并转换它。

答案 2 :(得分:0)

试试这段代码:

而不是for循环,只需写下这个 -

initialMoneyOutput = initialMoney.get(initialMoney.size() - 1);
finalMoneyOutput = finalMoney.get(finalMoney.size() -1 );