2014-06-06 2 views
-4

В моей программе я конвертирую CAD в USD в качестве примера, когда я ставлю 10 долларов США, я получаю обратно 9,14 доллара США, что верно. Но после этого, например, я добавляю $ 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

Попробуйте этот код:

Вместо того, чтобы цикл, просто написать this-

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

ДА СПАСИБО ВАМ – user3009505

+0

Добро пожаловать. Можете ли вы проголосовать за этот пост. –

0

ArrayList не добавляет целых чисел, если вы храните их в списке. Каждое целое число является новым объектом Int в ArrayList и не связано с другими значениями. В реализации может быть некоторая ошибка. Можете ли вы опубликовать фрагмент кода, который вы используете?

+0

Добавлено. Извини за это. – user3009505

0

Инициализировать initialMoneyOutput и finalMoneyOutput до 0 непосредственно перед циклом for, где вы его выводите.

Также почему вам нужно добавить все начальные денежные значения в цикл for. Просто получите последнюю версию и конвертируйте ее.

+0

Я не уверен, что вы имеете в виду. Я очень новичок, ты не можешь помочь мне через Teamviewer или что-то еще? – user3009505

Смежные вопросы