Java Can';t向数组中添加变量

Java Can';t向数组中添加变量,java,arrays,multidimensional-array,indexoutofboundsexception,spiral,Java,Arrays,Multidimensional Array,Indexoutofboundsexception,Spiral,当我构建我的Ulam(素数)螺旋时,我总是遇到这种奇怪的问题。我在SpiralMaker()中所做的是使用4步方法创建螺旋。只要该位置小于阵列中的总平方,且位于步骤1,则应向右移动1步并放置2。当它点击第2步时,它向上移动1并放置numLocation,现在是3。在步骤3中,它向左移动两次,采取两个步骤,并将这些位置设置为4和5,以此类推 但是当我运行这个时,我在第32行得到下面的异常 线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:5

当我构建我的Ulam(素数)螺旋时,我总是遇到这种奇怪的问题。我在SpiralMaker()中所做的是使用4步方法创建螺旋。只要该位置小于阵列中的总平方,且位于步骤1,则应向右移动1步并放置2。当它点击第2步时,它向上移动1并放置numLocation,现在是3。在步骤3中,它向左移动两次,采取两个步骤,并将这些位置设置为4和5,以此类推

但是当我运行这个时,我在第32行得到下面的异常

线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:5

导入java.util.array;
公共类网格生成器{
私有静态int gridRow=5;//R=length
私有静态int gridCol=5;//C=height
私有静态int[]grid=newint[gridRow][gridCol];
私有静态int totalSteps=(gridRow*gridCol);//网格上的块总数
private static int numLocation=1;//位置是指框中的数字,即1、2、3等。
私有静态int rowLength=1;
专用静态int colLength=1;
公共静态void main(字符串[]args){
网格[Calc.findArrayCenter(gridRow)][Calc.findArrayCenter(gridRow)]=1;
spiralMaker();
对于(int r=0;rgrid[r][c+1]=numLocation+1;//当0时无错误,当1“java.lang.ArrayIndexOutOfBoundsException”
}
numLocation++;
行长++;
}
}
}
}
}
}
}
// -----------------------
公共类计算{
公共静态int findArrayCenter(int center){
int fcenter=0;
如果(中心%2!=0)
fcenter=(int)((中间/2));
其他的
fcenter=(中心/2);
返回fcenter;
}
公共静态布尔值isOdd(int num){
布尔结果=真;
如果(数值%2==0)
结果=假;//假=偶数,真=奇数
返回结果;
}
公共静态布尔primeTester(int num){
如果(num==1)
返回false;
如果(num%2==0&&num!=2)
返回false;

对于(int primeCheck=3;primeCheck,请记住Java中的数组是零索引的

更改:

grid[r][c + 1] = numLocation + 1;
grid[r-1][c] = numLocation + 1;
至:

grid[r][c + 1] = numLocation + 1;
grid[r-1][c] = numLocation + 1;

看起来您运行循环的次数太多了。因为数组是[5][5],而您使用的是[r][c+1],所以您永远不希望c是4

改变

for(int c=0;c

for(int c=0;c
看看这是否有效。您正在分配一个二维数组grid[gridRow][gridCol],它至少是一个5x5数组。在第29行中,您从0开始计算gridCol(=4)。在第32行中,您再次递增gridCol(或c)。因此,您正在为数组的第6个元素编制索引,但是,该数组只有5个元素…

grid[r][c+1]=numLocation+1;+1又是什么意思?它查找最后一个计数到的数字的位置,移动1步,然后添加数字+1
static ints
are meh…你为什么要使用它们?jw..我这样做了,但现在我无法使用以下内容遍历数组:for(int I=0;I