微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

错误的例外

所以,我从文本文件中取出一行,并将其作为一个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脚本?

以特权用户身份运行代码 – pipe理密码更改

我们在堆栈跟踪之前看到两个n , System.out.println()似乎被一个空字符串调用两次。

所以看来,在我的第二次迭代中, inventorylist[i]是一个空字符串。 所以.split(" ")在索引0处返回一个空字符串的单元素数组。

这就是为什么在j的第二次迭代中,您在索引1处有一个Arrayindexoutofboundsexception

您的文本来源包含两行!

第一行是你的屏幕截图:

01 MusicCD 100 20 5.00

第二个是简单的空行。

所以你的小程序在第一行正确循环,打印出正确的结果。 然后循环第二行(空行)并执行以下操作:

打印出空行。 看看你的截图。 它包含这个写的空行。

将这个空字符串拆分为一个1元素数组。

遍历这个1元素数组,正确地打印第一个元素(另一个空行 – >看屏幕截图)。

正确地抛出索引1的AIOOBE,因为没有这样的索引。

结论:在进入循环之前检查空行。 或者检查拆分数组中的元素数量

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐