我正在运行一个简单的java程序。我在Netbeans中编写了它。一切都很好。试图将代码转换为使用Ant,因为这是我的课程需要的,而且我得到一个奇怪的错误。索引超出界限错误
从.TXT未来中的所有文字格式,
Baker William Chavez 04/01/05
Sanchez Jose Chavez 06/15/05
etc ...
有大约20项,3名和日期。每个条目都在自己的路线上。
我使用这个代码在读它。
while ((line = br.readLine()) != null) {
//formatting data correctly
String [] info = line.split(" ");
for(int i = 0; i < info.length; i++){
System.out.println(info[i]);
}
System.out.println(info[0]);
System.out.println(info[1]); /* this line of code */
}
所以每到信息[]是长度为4的当我运行for循环,它究竟是打印出的一切如预期。打印出“info [0]”的作品完全符合预期。
但由于某些原因,当我试图打印出 “信息[1]”,我得到一个
java.lang.ArrayIndexOutOfBoundsException: 1
错误。我没有解释为什么会发生这种情况。当我不尝试自行打印信息[1]时,我的程序正常工作。在for循环中,info [1]被打印出来,因为for循环循环了4次。此代码在Netbeans中完美工作,但使用Ant不起作用。
有谁知道添加或移除只有一条线路,
System.out.println(info[1]);
导致我的程序运行或抛出一个异常?
我在运行Ant 1.9.2
我运行Java 1.7.0_17
我检查这个多次,所以我敢肯定它不是我做的erro ron。我是一个相当有经验的程序员,所以我非常有信心,这不是我的错误。它在Netbeans中运行良好。我没有解释错误。
编辑1. 我的代码在第二次抛出while循环时抛出一个错误。 打印出信息[]长度,或者线条本身效果很好,我自己不打印出线条[1]。它仍然失败,并在我单独打印info [1]时引发错误。
编辑2. @Millie史密斯右侧线索,因为我的.txt文件的格式不正确。由于某些原因在记事本中查看它并没有显示每行之间的额外空间。 http://pastebin.com/njjdSHHZ 我的正确的pastebin。 我试图用代码来去掉所有的空格,逗号,新的生产线,而这样的,
line = line.replaceAll("\\s+", " ");
line = line.replaceAll(",","");
line = line.replaceAll("\\n", "");
line = line.replaceAll("\\r", "");
String [] info = line.split(" ");
我错误地假设,该代码将采取任何违规的照顾。我错了。因此,在我的第一个pastebin中,我将代码格式化为我认为正在处理的内容,这也是不正确的。
所以如果我测试line.length()> 1,那给了我我想要的结果。我不是一个有经验的程序员,因为我认为我是。
体验!=不是我的错误。在循环之后的Println info.length ... System.out.println(“length:”+ info.length);调用拆分前的 –
添加:System.out.println(“line =”+ line); – TofuBeer
给我们输入文件。这听起来像是每条数据记录之间都有一条空行。也许pastebin它,但一定要pastebin *全部*。 –