Java,填充Object [] []数组与数据
问题描述:
我想用我的对象类中的数据填充Object[][]
数组。但即时填充阵列有问题。以下是我想要填写的Object[][] data
。此时返回的数据变量不能被该方法看到。我试图删除方法和填充数组在rows
声明但不能因为有一个for循环。我正在填写object[][]
数组吗?Java,填充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;
}
答
你做得不对。
在你的代码中,你声明了一个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();
}
答
你必须分配两次阵列。一次为行,之后为一行。
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维数组比你必须首先定义数组的大小(也如果它是一个二维数组!)
看到这个内容得到一些澄清:
http://www.leepoint.net/notes-java/data/arrays/arrays-2D.html
在我看来,像你只有一个尺寸参数为阵,所以我会用一个正常的阵列,而不是一个2维之一。
我会做这样的事情:
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;
}
如果你必须使用一个2维对象数组,比你要定义第二尺寸大小和填充数组是这样的:
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() } };
}
}
希望这有帮助。
只要变量在外部声明,在for循环内部创建的数组将存在外部。所以这不是问题。但我同意这不是你大部分时间想要的。 – 2013-02-24 11:05:51
当然,我的意思是在for循环中声明一个变量,他在代码中做了什么。我为我的误会道歉。 – 2013-02-24 11:07:21
谢谢你的回复,我看到了我遇到的问题。所有现在都按预期工作。 – user1851487 2013-02-24 11:08:43