"Array Dimension Missing, expected ' ; ' "

"Array Dimension Missing, expected ' ; ' "

我正在尝试将客户数据传递到 table。但是,在编写此私有方法时,我不断收到上述错误消息。我是 Java 的新手。有帮助吗?

private void addCustomerToTable(Customer customer){
    DefaultTableModel model = (DefaultTableModel) accountTable.getModel();
    model.setRowCount(model.getRowCount()+1);
    model.addRow(new Object[] (customer.getFirstName(), 
    customer.getLastName(), customer.getAccount().getAccountNumber(),
    customer.getAccount().getBalance()));

}

(我稍后会正确格式化代码。Eclipse 需要很长时间才能启动。我也会尽快删除这一行)

当您创建数组并立即填充它时,您需要大括号。 例如,如果我创建一个双精度数组并且我希望它包含值 1,2,3,4,5,我会这样做:

double[] array = new double[]{1.0,2.0,3.0,4.0,5.0};//Notice: I didn't specify the length of the array. 

现在,对于您的具体情况,您需要:

model.addRow(new Object[] {
         customer.getFirstName(),
         customer.getLastName(),
         customer.getAccount().getAccountNumber(), 
         customer.getAccount().getBalance()
         });
                                          

Java 将创建一个长度等于给定值数(在您的情况下为 4)的数组。

来自javadoc

或者,您可以使用快捷语法来创建和初始化数组:

int[] anArray = { 
    100, 200, 300,
    400, 500, 600, 
    700, 800, 900, 1000 }; 

Here the length of the array is determined by the number of values provided between braces and separated by commas.

数组对象需要 defined/enclosed 在花括号 {} 中而不是圆括号 ().

例如:

new Object[] { 1, 2, 3 };

所以在你的情况下,代码应该是:

private void addCustomerToTable(Customer customer) {
    DefaultTableModel model = (DefaultTableModel) accountTable.getModel();
    model.setRowCount(model.getRowCount() + 1);
    model.addRow(new Object[] {
        customer.getFirstName(),
            customer.getLastName(), customer.getAccount().getAccountNumber(),
            customer.getAccount().getBalance()
    });
}

要了解有关 Java 中数组的更多信息,请参阅:https://docs.oracle.com/javase/specs/jls/se7/html/jls-10.html