0

我的程序似乎仅针对此特定输入生成超出范围错误的字符串索引。相同的代码适用于其他输入。将在下面添加输出屏幕截图和代码。我四处搜索 - 这个错误只出现在单个输入的事实使得它很难解决。

               int ind,len,vallen,amount,credits = 0;
               String credit; 
               String value,item;
               float oneamount;
              // System.out.println("Credit Assignment");
               ind=input.indexOf("is");
               credit = input.substring(0, ind-1);
           //       System.out.println(credit);
                 //Seperate the Quantity and Item Name from the String
                  len = credit.length();
                  vallen= credit.lastIndexOf(" ");
                  value= credit.substring(0,vallen);          //**Line 59**
                  item = credit.substring(vallen,len).trim();
                  System.out.println(value);

在此处输入图像描述

4

3 回答 3

1

-1如果未找到特定的搜索字符串,则String.lastIndexOf返回。

所以在下面一行

vallen= credit.lastIndexOf(" ");

如果 credit 不包含“”,则 vallen 将为 -1。

所以

value= credit.substring(0,vallen); will throw error.
于 2014-08-14T06:31:52.553 回答
1

崩溃pish pish Gold is 40 Credits

我猜搜索返回 1 的索引,因为“pish”包含“is”。正确的 ?

正确的。ind是 1,credit是一个空字符串,因为找不到空格,所以vallen是 -1,异常发生在下一行。

于 2014-08-14T06:41:30.420 回答
0

问题在于

ind=input.indexOf("是");

这返回 1,因为 Pish 包含字符串“is”。所以现在我用

ind=input.lastIndexOf("是");

并且代码运行良好。感谢您的回复。我是初学者。将来会更好地格式化我的代码并包含堆栈跟踪而不是屏幕截图。

于 2014-08-14T06:49:24.900 回答