Java 获取StringIndexOutOfBoundsException,即使我的字符串长度超过它提供的值
我一直在线程“main”java.lang.StringIndexOutOfBoundsException中遇到异常:字符串索引超出范围:35018 告诉我35054个字符太大了,尽管我最近检查了有多少个字符,大约7000个,我想知道是否有人能帮我解决这个问题。这就是问题中的代码Java 获取StringIndexOutOfBoundsException,即使我的字符串长度超过它提供的值,java,Java,我一直在线程“main”java.lang.StringIndexOutOfBoundsException中遇到异常:字符串索引超出范围:35018 告诉我35054个字符太大了,尽管我最近检查了有多少个字符,大约7000个,我想知道是否有人能帮我解决这个问题。这就是问题中的代码 if (twojunglers[0].equals("hecarim")) { if (twojunglers[1].equals("leesin")) {
if (twojunglers[0].equals("hecarim")) {
if (twojunglers[1].equals("leesin")) {
String codeblock;
String codeblock1;
String codeblock2;
while ((codeblock = br.readLine()) != null) {
String makelinesintoone;
StringBuilder builder = new StringBuilder();
while ((makelinesintoone = br.readLine()) != null){
builder.append(makelinesintoone);
}
int hi = builder.indexOf("Red\">");
if (hi >= 0) {
codeblock1 = codeblock.substring(0, hi);
int cutstring_ = codeblock1.indexOf("Champion\">");
if (cutstring_ >= 0) {
codeblock2 = codeblock1.substring(0, cutstring_);
System.out.println(codeblock2);
StringIndexOutOfBoundsException
是一个异常,表示String
对象上使用的索引为负或大于字符串的大小
在实际代码中,问题很可能是由下面的substring()
调用引起的:
int hi = builder.indexOf("Red\">");
if (hi >= 0) {
codeblock1 = codeblock.substring(0, hi);
在返回hi
int的builder
变量上调用indexOf()
,然后在codeblock
变量上调用substring(0,hi)
。
问题是codeblock
和builder
变量在从两个不同的读取行对它们进行赋值时,引用的字符串不相同:
while ((codeblock = br.readLine()) != null) {
以及:
这没有任何意义。问题很简单,因为没有完整的解释或所有可用的代码。也许可以检查哪一行给了你这个问题,并更新你的问题
尽管需要检查的东西可能会节省时间
只需确保使用strings
分配strings
,而不是strings
分配chars
或ints
等
如果您使用charAt
获取的某个char
超出了字符串的范围
请用完整的错误更新您的问题。“我一直收到StringoutofboundsException,并告诉我35054个字符太大了,尽管我最近刚刚检查了有多少个字符,大约7000个。”这个异常告诉您索引35k对于7k个字符长的字符串来说太大了,但是您想知道为什么会这样?这是正确的tom。欢迎使用堆栈溢出。最好是。至少发布异常中的stacktrace,并指出它所指的是发布代码中的哪一行。事实上,您是不正确的。david他们所指的不是完全相同的字符串,但字符串中的内容相同。@Face123您能解释一下吗?
StringBuilder builder = new StringBuilder();
while ((makelinesintoone = br.readLine()) != null){
builder.append(makelinesintoone);