我一直在线程“main”中得到异常java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:35018 并且告诉我35054个字符是大的,即使我最近检查了有多少字符和它的大约7000我想知道是否有人可以帮我这个。这是有问题的代码。
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);
答案 0 :(得分:0)
StringIndexOutOfBoundsException
是一个例外,表示String
对象上使用的索引为负数或大于String
的大小。
在您的实际代码中,问题很可能是由substring()
调用引起的:
int hi = builder.indexOf("Red\">");
if (hi >= 0) {
codeblock1 = codeblock.substring(0, hi);
您调用返回indexOf()
int的builder
变量上的hi
,然后在substring(0, hi)
变量上调用codeblock
。
问题是,codeblock
和builder
变量不会引用相同的String
,因为您从两个不同的读取行中对它们进行了评估:
while ((codeblock = br.readLine()) != null) {
和:
StringBuilder builder = new StringBuilder();
while ((makelinesintoone = br.readLine()) != null){
builder.append(makelinesintoone);
没用。
答案 1 :(得分:0)
问题非常严重,因为没有完整的解释或您的所有代码都可用。也许检查哪一行给你问题并更新你的问题。
虽然要检查的事情可能会节省时间。
请确保您将strings
与strings
分配,而strings
分配chars
或ints
等。
如果您使用char
获得string
范围之外的某个charAt
。
请更新您的问题并提供完整的错误。