Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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
arrayindexoutofbounds异常处理 我学习java已经2个月了,我试着根据每3秒出现在屏幕中间的许多字母来编写一个游戏。 我想知道是否有人可以检查我的代码发生了什么,因为我真的不知道该怎么做,而且我在其他类似的问题中找不到解决问题的方法_Java_Arrays_Processing - Fatal编程技术网

arrayindexoutofbounds异常处理 我学习java已经2个月了,我试着根据每3秒出现在屏幕中间的许多字母来编写一个游戏。 我想知道是否有人可以检查我的代码发生了什么,因为我真的不知道该怎么做,而且我在其他类似的问题中找不到解决问题的方法

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

[编辑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_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]。你必须改变这一点,那我该怎么办?