所以我有一个字符串[] [],我想从我的数据库中保存一些信息。 Eclipse告诉我我需要初始化我的string [] [],所以我说string []] [] = null。现在我得到一个空指针异常,但我不确定我做错了什么。
try {
Statement st = con.createStatement();
String systems[][] = null;
int firstcounter = 0;
String item = "SELECT ram, cpu, mainboard, cases, gfx FROM computer_system";
ResultSet rs = st.executeQuery(item);
while (rs.next()){
systems[firstcounter][0] = rs.getString("ram");
systems[firstcounter][1] = rs.getString("cpu");
systems[firstcounter][2] = rs.getString("mainboard");
systems[firstcounter][3] = rs.getString("cases");
systems[firstcounter][4] = rs.getString("gfx");
firstcounter++;
}
System.out.println(systems[0][0]);
答案 0 :(得分:5)
您应该将数组初始化为非null值,以便使用它:
String systems[][] = new String[n][5];
其中n
是数组的最大容量。
如果您事先不知道数组应包含多少行,则可以改为使用ArrayList<String[]>
,因为ArrayList
的容量可以增长。
例如:
Statement st = con.createStatement();
List<String[]> systems = new ArrayList<String[]>();
String item = "SELECT ram, cpu, mainboard, cases, gfx FROM computer_system";
ResultSet rs = st.executeQuery(item);
while (rs.next()){
String[] row = new String[5];
row[0] = rs.getString("ram");
row[1] = rs.getString("cpu");
row[2] = rs.getString("mainboard");
row[3] = rs.getString("cases");
row[4] = rs.getString("gfx");
systems.add(row);
}
答案 1 :(得分:2)
这是因为,您将systems[][]
初始化为null
。
请尝试使用String systems[][] = new String[x][y];
,其中x和y是矩阵的尺寸。
但是我们不喜欢Java代码中的数组,而是使用Lists。列表可以扩展,但矩阵不能,列表提供编译时类型检查,因此使用起来更安全。有关更多信息,请参阅Joshua Bloch的Effective Java中的第25项,其中说:
第25项:首选列表到数组
答案 2 :(得分:1)
您需要按以下方式初始化
String systems[][] = new String[size][size];
其中size =您想要的字符串数组的大小。