Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取StringIndexOutOfBoundsException,即使我的字符串长度超过它提供的值_Java - Fatal编程技术网

Java 获取StringIndexOutOfBoundsException,即使我的字符串长度超过它提供的值

Java 获取StringIndexOutOfBoundsException,即使我的字符串长度超过它提供的值,java,Java,我一直在线程“main”java.lang.StringIndexOutOfBoundsException中遇到异常:字符串索引超出范围:35018 告诉我35054个字符太大了,尽管我最近检查了有多少个字符,大约7000个,我想知道是否有人能帮我解决这个问题。这就是问题中的代码 if (twojunglers[0].equals("hecarim")) { if (twojunglers[1].equals("leesin")) {

我一直在线程“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);

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