特定字符串生成StringOutOfBoundsException

时间:2014-08-14 06:26:34

标签: java substring indexoutofboundsexception indexoutofrangeexception

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

               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);

enter image description here

3 个答案:

答案 0 :(得分:1)

如果找不到特定的搜索字符串,

String.lastIndexOf会返回-1

所以在以下一行

vallen= credit.lastIndexOf(" ");

如果信用不包含“”,那么vallen将为-1。

所以

value= credit.substring(0,vallen); will throw error.

答案 1 :(得分:1)

pish pish Gold is 40 Credits

崩溃
  

我猜搜索会返回索引1,因为" pish"包含   "是&#34 ;.对吗?

右。 ind为1,credit为空字符串,由于找不到空格,vallen为-1,下一行发生异常。

答案 2 :(得分:0)

问题在于

  

IND = input.indexOf( “是”);

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

  

IND = input.lastIndexOf( “是”);

代码工作正常。谢谢你的回复。我是初学者。将格式化我的代码更好,并在将来包含Stack Trace而不是Screenshots。