Неверный результат расчета - PullRequest
       1

Неверный результат расчета

0 голосов
/ 20 сентября 2019

Я написал этот короткий код и хочу разрешить пользователям вводить баланс банка.Затем в новом диалоговом окне подтверждения они будут выбирать, хотят ли они ввести сумму транзакции.Если «ДА», то они вводят либо положительные, либо отрицательные числа.Если введенное значение отрицательное, программа вычитает сумму транзакции из баланса банка.Если введенное значение положительное, программа добавит стоимость транзакции на баланс банка.В конце, если пользователь выберет кнопку «Нет» в диалоговом окне подтверждения, программа закроется с результатами расчета!Вопрос: когда я ввожу цифры для банковского баланса и транзакций, поэтому получаю неправильный ответ!

Я пытался использовать цикл while и делать в то время, но я все еще получаю неправильные результаты!

    double total = 0;
    String blc = JOptionPane.showInputDialog(null,"Enter the balance");
    double balance = Double.parseDouble(blc);

    int trcsn = JOptionPane.showConfirmDialog(null,"Transaction: ","",JOptionPane.YES_NO_OPTION);

    while(trcsn == JOptionPane.YES_OPTION){
        String transaction = JOptionPane.showInputDialog(null,"Enter amount:");
        double trc = Double.parseDouble(transaction);
        trcsn = JOptionPane.showConfirmDialog(null,"Transaction: ","",JOptionPane.YES_NO_OPTION);
        if(trc < 0){
            total = balance - trc;
        }else{
            total = balance + trc;
        }
    }
    JOptionPane.showMessageDialog(null,total);

1:Я ввожу 1000 долларов в качестве банковского баланса.

2: Я ввожу 1050 (положительно) в качестве суммы транзакции.

3: Я ввожу -500 (отрицательное значение) в качестве суммы транзакции для второй попытки.

4: Ответ 1500.00, что неверно!

1000 + 1050 = 2050,00

2050 - 500 = 1550,00

Ответ должен быть 1550

Почему ответ неправильный ???

Ответы [ 3 ]

1 голос
/ 20 сентября 2019

В этом разделе:

    if(trc < 0){
        total = balance - trc;
    }else{
        total = balance + trc;
    }

Вы обновляете свою общую сумму, но не баланс.Из созданного вами фрагмента это остается неизменным.

Как указал @Fildor в комментариях ниже, в данный момент у вас есть ошибка, так как вы либо складываете положительные числа вместе, либо вычитаете отрицательное число(x - (-y) == x + y)).Чтобы это исправить, просто замените весь блок if на total = balance + trc.

Вам необходимо обновить свой баланс, чтобы иметь то же значение итога, или же вообще обойтись без итога и использоватьполе баланса.

0 голосов
/ 20 сентября 2019
    double updatedBalance = (trc < 0) ? balance - trc : balance + trc;
    total = updatedBalance;

Как и в приведенном выше ответе, необходимо обновить баланс.

0 голосов
/ 20 сентября 2019

Вы должны сделать что-то вроде следующего:

String blc = JOptionPane.showInputDialog(null,"Enter the balance");
double balance = Double.parseDouble(blc);

int trcsn = JOptionPane.showConfirmDialog(null,"Transaction: ","",JOptionPane.YES_NO_OPTION);

while(trcsn == JOptionPane.YES_OPTION){
    String transaction = JOptionPane.showInputDialog(null,"Enter amount:");
    double trc = Double.parseDouble(transaction);
    trcsn = JOptionPane.showConfirmDialog(null,"Transaction: ","",JOptionPane.YES_NO_OPTION);
    balance += trc;
}
JOptionPane.showMessageDialog(null,balance);

Во-первых, вам нужно заменить выражение if на утверждение + =.Это потому, что вычитание, когда trc является отрицательным, и добавление, когда trc является положительным, эквивалентно добавлению абсолютного значения trc каждый раз, что, вероятно, не то, что вы хотите сделать.Во-вторых, вам нужно использовать 1 переменную для баланса и отслеживать изменения во времени.total не имеет смысла в предыдущем коде, так как он переопределяет свое собственное значение каждый раз, когда выполняется оператор if.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...