黑马程序员技术交流社区
标题:
for 循环里 new 对象的问题
[打印本页]
作者:
nuoxi0318
时间:
2013-7-24 21:35
标题:
for 循环里 new 对象的问题
本帖最后由 杨兴庭 于 2013-7-25 23:04 编辑
1.需求:
txt中有200行数据,每行数据不等长,要将他读到一个二维数组里去。
2.我的做法:
先声明一个二维数组,初始化高维200,因为不知道第二维长度,所以要等读txt中的每行再确定。
每读一行,初始化一个低维,然后将该行的数据读到低维数组中。反复200次。
但是我在Main函数里print出这个二维数组里都是0啊。
谁给看下问题在哪里?
int[][] a = new int[200][];
try {
File f = new File ("D:\\a.txt");
BufferedReader br = new BufferedReader (new FileReader (f));
String s = null;
int i = 0;
while ((s = br.readLine()) != null) {
String[] str = s.split("\\s");
for (int j=0 ; j<str.length ; j++) {
a[i] = new int[str.length];
a[i][j] = Integer.parseInt (str[j]);
}
i++;
}
} catch (IOException e) {
e.printStackTrace ();
}
复制代码
作者:
草貌路飞
时间:
2013-7-24 22:33
a[i] = new int[str.length]; 你的new 放到二层循环里了..每次赋值都会重建.我也是运行了才看到的..悲剧
作者:
江纳纳
时间:
2013-7-24 22:49
将第十行new 语句移到 for循环之上 ,因为如果在for循环之内,循环一次创建一个低维数组。该行的数据尚未读完,下次循环又创建一个新的低维数组将其替换。
作者:
wyy283
时间:
2013-7-25 11:38
[i] = new int[str.length]; 你的new 放到二层循环里了..
作者:
xwf4348
时间:
2013-7-25 12:03
原因:第十行new 语句在for循环之内,循环一次创建一个低维数组。该行的数据尚未读完,下次循环又创建一个新的低维数组将其替换。
解决:将new语句放到for循环外面即可
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2