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