Java,用数据填充Object [] []数组

时间:2013-02-24 10:49:19

标签: java oop multidimensional-array

我正在尝试用我的Object Class中的数据填充Object[][]数组。但是我在填充数组时遇到了问题。以下是我要填写Object[][] data的内容。此时方法无法看到返回的数据变量。我已经尝试删除方法并填充声明rows的数组,但不能,因为有一个for循环。

我目前正在正确填充object[][]数组吗?

 public class CustomersDialog extends javax.swing.JDialog {
    private CustomerList customers = new CustomerList();
    Object rows[][] = getData();

    public Object[][] getData() {
       customers = dataManager.getUserData();
       int size = customers.size();
       Customer customer = new Customer();

       for(int i = 0; i < size; i++) {
           customer = customers.getCustomerAt(i);
           Object [][] data = { 
           { Integer.toString(customer.getCustomerID()), customer.getfName(), customer.getlName() } };
       }

       return data;
    }
 }

进一步这种在循环外创建数组的方法会导致编译器发出'空语句消息',并且说它'需要;语句后的行结束.get

 public Object[][] getData() {
    customers = dataManager.getUserData();
    int size = customers.size();
    Customer customer;

    Object [][] data;

    for(int i = 0; i < size; i++) {
        customer = customers.getCustomerAt(i);
        data = { 
        { Integer.toString(customer.getCustomerID()), customer.getfName(), customer.getlName() } };
    }

    return data;
}

3 个答案:

答案 0 :(得分:4)

你没有正确地做到这一点。

在您的代码中,您声明了一个数组INSIDE for循环,这意味着在循环之后,该数组不再存在。这就是为什么你不能返回data - 它根本就不存在。

有关您可以阅读的变量的范围和生命周期的更多信息:http://www.c4learn.com/javaprogramming/the-scope-and-lifetime-of-variables-in-java-programming-language/

你想要做的是在循环外声明数组:

Object [][] data;
for(int i; i < size; i++) {
   // Filling data array
}
return data;

接下来就是如果要使用数组,首先应该初始化它:

Object [][] data = new Object [size][3];

然后你可以在for循环中填写它,如下所示:

for(int i; i < size; i++) {
   customer = customers.getCustomerAt(i);
   data[i][0] = Integer.toString(customer.getCustomerID());
   data[i][1] = customer.getfName();
   data[i][2] = customer.getlName();
}

答案 1 :(得分:2)

您必须分两次分配数组。一次为行,每行一次。

Object[][] data = new Object[size];
for(int i = 0; i < size; i++) {
   customer = customers.getCustomerAt(i);
   data[i] =
      new Object[]{
         Integer.toString(customer.getCustomerID()),
         customer.getfName(),
         customer.getlName()
      };
   }

答案 2 :(得分:1)

如果你真的想要使用二维数组,那么你必须首先定义数组的大小(如果它是一个n维数组!)

请参阅此内容以获得一些澄清:

http://www.leepoint.net/notes-java/data/arrays/arrays-2D.html

在我看来,你只有一个大小的数组参数,所以我会使用普通数组而不是二维数组。

我会做这样的事情:

public Object[] getData() {
   customers = dataManager.getUserData();
   int size = customers.size();
   Object[] result = new Object[size];
   Customer customer;

   for(int i = 0; i < size; i++) {
       customer = customers.getCustomerAt(i);
       result[i] = { 
       { Integer.toString(customer.getCustomerID()), customer.getfName(), customer.getlName() } };
   }

   return data;
}

如果必须使用二维对象数组,则必须定义第二个尺寸标注并填充数组:

for(int i = 0; i < sizeDimOne; i++) {
    for(int k = 0; k < sizeDimTwo; k++) {
          result[i][k] = { { Integer.toString(customer.getCustomerID()), customer.getfName(), customer.getlName() } }; 
    }
}

希望这有用。