我正在尝试用我的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;
}
答案 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() } };
}
}
希望这有用。