数组引用越界,异常处理问题 引用一个数组,不知道数组边界,怎么进行判断,非得要遍历吗?怎么引用的数组越界了? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不懂,数据的长度不是可以通过.length获得吗 可以通过 .length 来获取数组长度 还有个问题。我自己写了一个函数查询数据库,导入到2维数组当中,我建立了一个动态数组array[行数][列数]但是在循环读取数据库赋值的时候必须要把数组下标都加一才不会出错,否则就会越界。比如我的数据库中有2行2列,我必须要写出array[3][3]才不会犯错,请问这个是怎么回事呢?String[][] Content = new String[RowNum + 1][ColumnNum + 1];rs = this.Smt.executeQuery(" select * from table where condition"); while (rs.next()) { for (int varnum = 1; varnum <= ColumnNum; varnum++) { Content[i][varnum] = this.getString(rs.getString(varnum)); } i += 1; } 其实还有个办法,就是不要用Java原生的数组[],而改用泛型的ArrayList这种容器,然后用iterator就可以很轻松的遍历 数据库查询,不建议使用数组的,用arraylist最好。java数组要不直接初始化时候直接定义固定维数、长度,要不先要声明维数、长度,没有动态数组的说法,不像C++还可以在申请空间,java只有重新拷贝了。只要数组赋值成功,那它的行数为,str.length,列数为str[0].length而且在sql中,本来就有一个计行数的方法,只不过,用了以后,要把游标还回去而已 for (int varnum = 1; varnum <= ColumnNum; varnum++) { Content[i][varnum] = this.getString(rs.getString(varnum));你的varnum是从1 开始的,改成从0开始的试试。你的嵌套循环中,数组的下标没用设置好。此外,不建议用多维数组 这个是否是最好的解决方法,也算是最高效的解决方法?除了这个容器,其他的LIST是否也行,区别又在哪里,给几个关键字我到网上搜索一下,谢谢了 java的下标是从0开始还是1呢?我看到我引用的需要从1开始,手册上有这个介绍吗? 恩,没有动态数组的说法,这个是以前的毛病,一下改不过来。我是先读取行数和列数,然后再生成数组,实际上是做了3次查询,感觉效率低,而且容易出错。ARRAYLIST之外还有其他能解决的思路吗?能否给几个关键字,我好学习学习 可能是读取数据库的时候,他还会hashnaxt一行数据,所以你要长度加一 首先需要问题定位:通过你的帖子,我得到的信息:假如你从数据库中查询结果为2行2列。你想要把查询结果放到二维字符串数组里面。问题:你初始化的二维字符串数组在存放数据的时候报了数组越界问题。原因推断:你没有保证查询出来的2行2列正确的放入到二维字符串数组中。调试下你原来的程序吧。从content[0][0],content[0][1],content[1][0],content[1][1]这个四个元素逐一检查。报错产生的错误信息是最好的提示:数组越界,这个就已经告诉你真正原因了。你所要做的,是找到你什么地方用错了 求哪位大大帮忙看看,数组去重问题。 有关JLabel的两个小问题,亟待解决 求一个比较棘手问题的答案 java里面的String类型都是以unicode编码的吧?怎么没有一个unicode数据类型啊? 如何获取刚编辑完的单元格的内容 *** 据你所知,跨平台的语言有哪些? 这些表怎么用SQL写出来!!!!!!!!!!!!!(oracle8.16) 请教一个jbuilder6的问题 明天早上就考CET-6了,今天复习了一天,大家祝我通过吧!散分喽!!! java.net.uri 现在的java还有FontRenderContext这个类吗? java算法问题
我自己写了一个函数查询数据库,导入到2维数组当中,我建立了一个动态数组
array[行数][列数]但是在循环读取数据库赋值的时候必须要把数组下标都加一才不会出错,否则就会越界。
比如我的数据库中有2行2列,我必须要写出array[3][3]才不会犯错,请问这个是怎么回事呢?
String[][] Content = new String[RowNum + 1][ColumnNum + 1];rs = this.Smt.executeQuery(" select * from table where condition");
while (rs.next()) {
for (int varnum = 1; varnum <= ColumnNum; varnum++) { Content[i][varnum] = this.getString(rs.getString(varnum));
} i += 1; }
java数组要不直接初始化时候直接定义固定维数、长度,要不先要声明维数、长度,没有动态数组的说法,不像C++还可以在申请空间,java只有重新拷贝了。
只要数组赋值成功,那它的行数为,str.length,列数为str[0].length而且在sql中,本来就有一个计行数的方法,只不过,用了以后,要把游标还回去而已
Content[i][varnum] = this.getString(rs.getString(varnum));你的varnum是从1 开始的,改成从0开始的试试。你的嵌套循环中,数组的下标没用设置好。
此外,不建议用多维数组
除了这个容器,其他的LIST是否也行,区别又在哪里,给几个关键字我到网上搜索一下,谢谢了
我是先读取行数和列数,然后再生成数组,实际上是做了3次查询,感觉效率低,而且容易出错。
ARRAYLIST之外还有其他能解决的思路吗?能否给几个关键字,我好学习学习
通过你的帖子,我得到的信息:假如你从数据库中查询结果为2行2列。你想要把查询结果放到二维字符串数组里面。
问题:你初始化的二维字符串数组在存放数据的时候报了数组越界问题。
原因推断:你没有保证查询出来的2行2列正确的放入到二维字符串数组中。调试下你原来的程序吧。从content[0][0],content[0][1],content[1][0],content[1][1]这个四个元素逐一检查。
报错产生的错误信息是最好的提示:数组越界,这个就已经告诉你真正原因了。你所要做的,是找到你什么地方用错了