错误:“;螺纹-1”;java.lang.IndexOutOfBoundsException
我有一些代码用于一个运行在服务器内部的琐事/解读机器人,在服务器中,用户试图在时间结束之前猜测问题的答案。代码编译得很好,但是在运行线程大约30-45分钟后,我收到一个错误,琐事停止工作。以下是我得到的错误:错误:“;螺纹-1”;java.lang.IndexOutOfBoundsException,java,multithreading,exception,Java,Multithreading,Exception,我有一些代码用于一个运行在服务器内部的琐事/解读机器人,在服务器中,用户试图在时间结束之前猜测问题的答案。代码编译得很好,但是在运行线程大约30-45分钟后,我收到一个错误,琐事停止工作。以下是我得到的错误: Exception in thread "Thread-1" java.lang.IndexOutOfBoundsException: Index: 973, Size 965 at java.util.ArrayList.rangeCheck(Unknown Source)
Exception in thread "Thread-1" java.lang.IndexOutOfBoundsException:
Index: 973, Size 965
at java.util.ArrayList.rangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at org.emulinker.kaillera.model.impl.Trivia.run(Trivia.java:251)
at java.lang.Thread.run(Unknown Source)
以下是org.emulinker.kaillera.model.impl.Trivia
的代码,从第249行开始:
else{
temp = generator.nextInt(questions.size() - 1);
questions_count = questions_num.get(temp);
questions_num.remove(temp);
}
关于如何解决这个问题,你有什么想法吗?我不确定Java还能提供什么其他信息让你更容易解决这个问题 它告诉您确切的行
Trivia.java:251
,集合大小965
,以及您试图使用的索引973
。这就足够了吗
通常情况下,我很少有机会尝试找出这几百行代码中的哪一行是第251行,但是,我现在很无聊,所以我会尝试一下(而且,在任何情况下,您已经用相关的行替换了大量的代码转储)。错误的路线似乎是:
else{
temp = generator.nextInt(questions.size() - 1);
questions_count = questions_num.get(temp); // << THIS ONE
questions_num.remove(temp);
}
else{
temp=生成器.nextInt(questions.size()-1);
questions\u count=questions\u num.get(temp);//我不确定Java还能提供什么其他信息让这变得更容易
它告诉您确切的行Trivia.java:251
,集合大小965
,以及您试图使用的索引973
。这就足够了吗
通常情况下,我很少有机会尝试找出这几百行中的哪一行是第251行,但是,我现在很无聊,所以我会尝试一下(而且,在任何情况下,您已经用相关行替换了大量代码转储)。错误行似乎是:
else{
temp = generator.nextInt(questions.size() - 1);
questions_count = questions_num.get(temp); // << THIS ONE
questions_num.remove(temp);
}
else{
temp=生成器.nextInt(questions.size()-1);
问题数量=问题数量获取(临时);//
线程“thread-1”java.lang.IndexOutOfBoundsException中的异常:
索引:973,尺寸965
此异常是不言自明的。questions_num
的大小为965,您试图在边界之外访问它,即973
正如所说
IndexOutOfBoundsException
被抛出,以指示某种类型的索引(例如到数组的索引、到
字符串或向量)超出范围
线程“thread-1”java.lang.IndexOutOfBoundsException中的异常:
索引:973,尺寸965
此异常是不言自明的。questions_num
的大小为965,您试图在边界之外访问它,即973
正如所说
IndexOutOfBoundsException
被抛出,以指示某种类型的索引(例如到数组的索引、到
字符串或向量)超出范围
格式化代码并指定行号。哪一行引发异常?
temp=generator.nextInt(questions.size()-1);
引发异常格式化代码并指定行号。哪一行引发异常?temp=generator.nextInt(questions.size()-1);
抛出ExceptionTanks以获取帮助,很抱歉出现了代码段。因此,要解决此问题,我需要同步问题和问题数量?我对编程相当陌生,我只是尝试“修复”我所相信的是我每天使用的一个程序中的小错误,这样我所在的社区就可以享受一个正常工作的服务器。换句话说,你能不能帮我把它分解一下,像我是一个幼儿园老师一样给我解释一下?:@user3085046,不要在这里使用那些“高难度”的德语单词,而“初学者”也可以:-)但是,幽默除外,是的。a假设它们是同步的,那么将索引temp
从questions\u num
中删除,而不是questions
中删除是个坏主意。如果它们不是同步的,您可能需要使用temp=generator.nextInt(questions\u num.size()-1)
相反,这一切都归结于意图,不幸的是,我不知道,因为我真的不想阅读450多行代码:-)这不起作用,但非常感谢你的帮助,我会努力找出答案out@user3085046,那么,至少您知道具体的问题,即您正在使用不同大小的集合来生成in索引到一个较小的集合中。从那里开始,至少应该更容易找到根本原因。祝你好运。感谢你的帮助,对代码片段感到抱歉。所以要解决这个问题,我需要同步问题和问题数量?我对编程相当陌生,我只是尝试“修复”我所相信的是我每天使用的一个程序中的小错误,这样我所在的社区就可以享受一个正常工作的服务器。换句话说,你能不能帮我把它分解一下,像我是一个幼儿园老师一样给我解释一下?:@user3085046,不要在这里使用那些“高难度”的德语单词,而“初学者”也可以:-)但是,幽默除外,是的。a假设它们是同步的,那么将索引temp
从questions\u num
中删除,而不是questions
中删除是个坏主意。如果它们不是同步的,您可能需要使用temp=generator.nextInt(questions\u num.size()-1)
相反,这一切都归结于意图,不幸的是,我不知道,因为我真的不想阅读450多行代码:-)这不起作用,但非常感谢你的帮助,我会努力找出答案out@user3085046,那么,至少您知道具体的问题,即您正在使用不同大小的集合来生成in将dex放入一个较小的集合中。从那里,至少应该更容易找到根本原因。祝你好运。