所以,我从文本文件中取出一行,并将其作为一个string存储在一个string数组中,我把它称为inventorylist [i]。 然后我使用.split(“”)分割它,并将其中的令牌存储在名为invlistTokens的数组中。 当我使用该标记数组执行任何操作时,它将引发一个超出界限的exception。 如果我把它放在一个forloop显示我期望的5个令牌,它将成功地阅读它们,然后抛出这个exception。
public static item[] loadInv(){ String inventoryname = "Henderson_j_inv.txt"; String[] inventorylist= new String[50]; //more than enough room for the file to load in String[] invlistTokens = new String [5]; item[] inventory = new item[50]; try { ReadFile file = new ReadFile(inventoryname); inventorylist = file.OpenFile(); } catch (IOException e) { System.out.print("FILE Failed TO LOAD"); } for(int i=0; i< Array.getLength(inventorylist); i++){ System.out.println(inventorylist[i]);//This always succeeds invlistTokens=inventorylist[i].split(" "); for(int j=0; j<5; j++){ //This is the weird ForLoop. It completes and then java throws out of bounds. System.out.println(invlistTokens[j]); } }
请原谅我的杂乱的post,这是我的第一篇文章,我不知道我可以如何具体这样一个奇怪的错误
Eclipse屏幕截图: http : //imgur.com/ssArryd
与ONBUILD选项(Windows中的Docker工具箱)
InputMismatchException在我从cmd运行jar时发生,如果从想法运行则不会发生
禁用交互式login
在卡萨布兰卡获取HTTP请求的IP
我的图片的位置
我在我的实际代码中得到了正确的variables,只是在向post中添加forloop时发生了一些错误
这是实际的例外,除了我知道它超过了1.循环完成所有5次运行之前,它抛出。
Exception in thread "main" java.lang.Arrayindexoutofboundsexception: 1 at shopping2.loadInv(shopping2.java:50) at shopping2.main(shopping2.java:23)
所以我改变了这个代码
public static item[] loadInv(){ String inventoryname = "Henderson_j_inv.txt"; String[] inventorylist= new String[50]; String[] invlistTokens = new String [100]; item[] inventory = new item[50]; try { ReadFile file = new ReadFile(inventoryname); inventorylist = file.OpenFile(); } catch (IOException e) { System.out.print("FILE Failed TO LOAD"); } System.out.print(inventorylist.length); //This displays 19,when it should be giving me 10 based on my file for(int i=0; i< inventorylist.length; i++){ //System.out.println(inventorylist[i]); invlistTokens=inventorylist[i].split(" "); System.out.println(invlistTokens.length); //This alternates between 5 and 1 }
所以我认为问题是在我的txt文件或我的读者类。 感谢大家的帮助。
checkdnsrr总是在窗口上返回false
如何使用命令promt运行.exe文件?
从类指针reinterpret_cast长
Windows机器上的网站自动login脚本?
我们在堆栈跟踪之前看到两个n , System.out.println()似乎被一个空字符串调用两次。
所以看来,在我的第二次迭代中, inventorylist[i]是一个空字符串。 所以.split(" ")在索引0处返回一个空字符串的单元素数组。
这就是为什么在j的第二次迭代中,您在索引1处有一个Arrayindexoutofboundsexception 。
您的文本来源包含两行!
第一行是你的屏幕截图:
01 MusicCD 100 20 5.00
第二个是简单的空行。
所以你的小程序在第一行正确循环,打印出正确的结果。 然后循环第二行(空行)并执行以下操作:
打印出空行。 看看你的截图。 它包含这个写的空行。
将这个空字符串拆分为一个1元素数组。
遍历这个1元素数组,正确地打印第一个元素(另一个空行 – >看屏幕截图)。
正确地抛出索引1的AIOOBE,因为没有这样的索引。
结论:在进入循环之前检查空行。 或者检查拆分数组中的元素数量。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。