arrayindexoutofbounds异常处理 我学习java已经2个月了,我试着根据每3秒出现在屏幕中间的许多字母来编写一个游戏。 我想知道是否有人可以检查我的代码发生了什么,因为我真的不知道该怎么做,而且我在其他类似的问题中找不到解决问题的方法
[编辑1]:我更新了循环的出口arrayindexoutofbounds异常处理 我学习java已经2个月了,我试着根据每3秒出现在屏幕中间的许多字母来编写一个游戏。 我想知道是否有人可以检查我的代码发生了什么,因为我真的不知道该怎么做,而且我在其他类似的问题中找不到解决问题的方法,java,arrays,processing,Java,Arrays,Processing,[编辑1]:我更新了循环的出口 int num_proyect_act = 0; float [] proyectil = new float [3]; float [] posX = new float [num_proyect_act]; float [] posY = new float [num_proyect_act]; float [] vX = new float [num_proyect_act]; float [] vY = new float [num_proye
int num_proyect_act = 0;
float [] proyectil = new float [3];
float [] posX = new float [num_proyect_act];
float [] posY = new float [num_proyect_act];
float [] vX = new float [num_proyect_act];
float [] vY = new float [num_proyect_act];
int [] radix = new int [num_proyect_act];
int tiempo;
int intervalo = 3;
void setup () {
tiempo = millis()/1000;
}
void draw () {
if (((millis()-tiempo)/1000) > intervalo) {
posX[num_proyect_act] = width/2;
posY[num_proyect_act] = height/2;
vY[num_proyect_act] = mouseY-height/2;
vX[num_proyect_act] = mouseX-width/2;
radix[num_proyect_act] =int(random(10, 60));
num_proyect_act++;
}
println (millis()/1000);
//meter aqui el calculo del tipo de proyectil
for (int i= 0; i> num_proyect_act; i++) {
dibujar_proyectil(i);
comprovar_lim(i);
modificar_pos(i);
}
}
无效项目{
float r= random (10, 40);
ellipse(posX[_i], posY[_i], r, r);
}检查for循环的退出条件:
for (int i= 0; i> num_proyect_act; i++) {
// ...
}
您可能正在创建长度为0的数组
int num_proyect_act = 0;
int [] radix = new int [num_proyect_act];
这似乎也是可疑的
for (int i= 0; i> num_proyect_act; i++) {
你可能是说:
for (int i= 0; i < num_proyect_act; i++) {
此代码可能是一个问题:
for (int i= 0; i> num_proyect_act; i++) {
dibujar_proyectil(i);
comprovar_lim(i);
modificar_pos(i);
}
除非num_proyect_act小于零,否则这不会例外。如果它确实执行,它将永远运行,或者直到您退出它或抛出异常为止,因为如果我大于num_provect_act,并且您将它每循环增加一次,它将始终大于num_provect_act,直到您至少获得溢出
但您的数组越界异常可能来自以下位置:
posX[num_proyect_act] = width/2;
posY[num_proyect_act] = height/2;
vY[num_proyect_act] = mouseY-height/2;
vX[num_proyect_act] = mouseX-width/2;
radix[num_proyect_act] =int(random(10, 60));
您已将这些数组创建为size num\u proyect\u act。Java中的数组索引从0开始,一直到大小1。因此,这些都超出了数组的范围。为更快的解决方案提供异常。请发布堆栈跟踪,并找出错误来自哪一行。创建多个空数组,然后尝试访问它们。因此你的越界例外void dibujar_proyectilint{float r=random 10,40;ellipseposX[\u i],posY[\u i],r,r;}我不能投票:这不是我的错,我理解这个问题,但我真的不知道该怎么办,我的意思是我该如何解决这个问题,这是一个代码语法错误吗?数组是异常的来源。创建的数组长度为0。因此,无论何时尝试从阵列访问任何内容,都会出现异常。更改数组的大小以避免这种情况;但我还是得到了那个期望,谢谢你们的耐心……再往下看,你们将通过num_proyect_act再次访问它。但是如果您有一个长度为num_proyect_act的数组,那么最后一个元素位于位置[num_proyect_act-1],而不是[num_proyect_act]。你必须改变这一点,那我该怎么办?