簡體   English   中英

如何使用 jtable 在 JAVA 中創建一個簡單的電子表格?

[英]How to create a simple spreadsheet in JAVA using jtable?

我很難用 Java 使用 jtable 做一個簡單的電子表格,這是我的輸出我的程序

余額應為 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);
        }

    }

該程序正在返回 -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表示list[0]balance最初為 15000

迭代1表示list[1]balance最初為 +250 或 -250,顯示值為 14750(15000-250)。 計算是list.get(1).getBalance() - list.get(0).getBalance

  • 假設它是+250,計算得出-14750
  • 假設它是-250,計算得出-15250

由於顯示器顯示 14750,因此它必須顯示計算出的數量,但會倒置 (數量*-1),這不包含在所提供的代碼片段中。

迭代2 :根據1我們可以假設, list[2]balance最初為 +250,balDisplay 應為 0 (250-250),但為 -500。

現在可以重新開始,假設初始余額實際上是 -15000,根據1等中的推理顯示為 +15000...

鑒於現有信息,這是我可以在合理時間內提供的。 分析表明第 3 行顯示的余額應為零,但實際為 -500。 沒有任何可用的東西可以解釋這一點。 另一方面,基於同樣的道理,余額也不可能是14500。

最可疑的是list.get(i).getBalance() - list.get(i-1).getBalance() 為什么要從另一個余額中扣除一個余額而不是從某個余額中扣除一個金額。 而且,為什么要從后面的 (i) 中扣除前面的 (i-1) 余額?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM