Как создать простую электронную таблицу в JAVA, используя jtable? - PullRequest
0 голосов
/ 30 ноября 2019

Я с трудом делаю простую электронную таблицу на Java. С помощью jtable вот мой вывод My program

Баланс должен составлять 14 750 - 250, что составляет 14 500. но программа возвращается к -500, что я не понимаю.

Я пытался настроить свой код по этому поводу, но я просто склонен все испортить. Вот коды, связанные с балансом. Стоит отметить, что я использовал mysql для доступа к данным из моей базы данных.

private void setBalance(int balance, int amount, String type) {
        if(type.equalsIgnoreCase("expense")) {
            balance = getBalance() - amount;
        }
        else if(type.equalsIgnoreCase("deposit")) {
            balance = amount;
        }
        else{
            balance = getBalance() + amount;
        }
        this.balance = balance;

    }

    public int getBalance() {

        return balance;
    }

//constructor for my transaction class
public Transaction(int transactionID, String transactionDetails, String transactionType, String purpose, int amount, Date date) {
        this.transactionID = transactionID;
        this.transactionDetails = transactionDetails;
        this.transactionType = transactionType;
        this.purpose = purpose;
        this.amount = amount;
        this.date = date;
        setBalance(getBalance(), amount, transactionType);
    }

Здесь приведены коды, в которые я добавляю значения в свою таблицу

public void showTable() {
        ArrayList<Transaction>list = transactionList();
        DefaultTableModel model = (DefaultTableModel) table.getModel();
        Object row[] = new Object[7];

        for(int i = 0; i < list.size(); i++) {
            row[0] = list.get(i).getTransactionID();
            row[1] = list.get(i).getDate();
            row[2] = list.get(i).getTransactionDetails();
            row[3] = list.get(i).getTransactionType();
            row[4] = list.get(i).getPurpose();
            row[5] = list.get(i).getAmount();
            if(i == 0) {
            row[6] = list.get(i).getBalance();
            }
            else {
                row[6] = list.get(i).getBalance() - list.get(i-1).getBalance(); //in order to retrieve the previous balance
            }
            model.addRow(row);
        }

    }

1 Ответ

1 голос
/ 01 декабря 2019

программа возвращает -500, чего я не понимаю

Хорошо, начальный баланс составляет 15000, затем 2 транзакции, которые должны вычитать 250 каждая

iteration balList balDisplay 
0          15000        15000 set by if(i == 0) {list.get(i).getBalance()}
1         +/-250        14750 set by else {list.get(1).getBalance() - list.get(0).getBalance}
2           250         -500 set by else {list.get(2).getBalance() - list.get(1).getBalance}

итерация 0 указывает, что balance из list[0] изначально была 15000

итерация 1 указывает, что balance из list[1] изначально была +250 или -250, отображаемое значение составляет 14750 (15000-250). расчет равен list.get(1).getBalance() - list.get(0).getBalance

  • при условии, что он равен +250, расчет дает -14750
  • при условии, что он равен -250, расчет дает -15250

, посколькудисплей отображает 14750, он должен отображать вычисленную сумму, но инвертированную (сумма * -1), которая не включена в представленные фрагменты кода.

итерация 2 : следующая из 1 можно предположить, что balance из list[2] изначально равно +250, balDisplay должно быть 0 (250-250), но равно -500.

Теперь можно начинать все сначала, предполагаяэтот начальный баланс на самом деле равен -15000, отображается как +15000 на основании аргументов в 1 и т. д.

Это то, что я мог бы предоставить в разумные сроки, учитывая доступную информацию. Анализ показывает, что отображаемое сальдо строки 3 должно быть равно нулю, но оно равно -500. Нет ничего доступного, чтобы объяснить это. С другой стороны, баланс также не может составлять 14500, исходя из тех же соображений.

Наиболее подозрительным было list.get(i).getBalance() - list.get(i-1).getBalance(). Почему один вычесть один баланс из другого баланса, а не сумму из некоторого баланса. А также, зачем вычитать более раннее (i-1) сальдо из более позднего (i)?

...