2014-06-06 119 views
-4

在我的程序中,我将CAD转换为USD作为示例,当我放入$ 10 CAD时,我得到$ 9.14 USD返回,这是正确的。但在此之后,例如,我添加50美元CAD并将其转换,它将显示$ 60 CAD是$ 54.86 USD,因为它应该只用50美元而不是60美元转换。这是因为arraylist中的数字正在增加,并且不知道该怎么办?防止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"); 
+4

如何向我们展示你的代码? – Mureinik

+1

您将第二个值添加到第一个*代码中的某处*。你如何期待我们解决它而不提出它? –

+0

你需要为我们分享一些代码来弄清楚什么是错误的,但是没有看到任何东西,我的猜测是你正在重新使用一个变量(保存要转换的数量)并以某种方式添加它。 –

回答

0

试试这个代码:

取而代之的for循环,只写这个 -

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

是非常感谢你 – user3009505

+0

欢迎。你能投这个帖子吗? –

0

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

+0

已添加。对于那个很抱歉。 – user3009505

0

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

此外,为什么你需要在该for循环中添加所有的初始货币值。 只需获得最新的一个并将其转换。

+0

我不确定你的意思。我很新,你介意通过teamviewer或者其他什么帮助我吗? – user3009505