我一直在从BoundsException获取java.lang.ArrayIndex异常:500
我不断得到一个错误,数组超出了界限,我无法找出什么是错误的我一直在从BoundsException获取java.lang.ArrayIndex异常:500,java,arrays,Java,Arrays,我不断得到一个错误,数组超出了界限,我无法找出什么是错误的 int[] oddArray = new int[500];//holds all the odd numbers int[] primeArray = new int[500];//holds all the prime numbers int[] modArray = new int[500];//holds all the mod values int remainder, p = 0, x = 0
int[] oddArray = new int[500];//holds all the odd numbers
int[] primeArray = new int[500];//holds all the prime numbers
int[] modArray = new int[500];//holds all the mod values
int remainder, p = 0, x = 0;
//fills up the oddArray & modArray
for(int n = 0; n < 500; n++)
{
oddArray[n] = (n * 2) + 1;
modArray[n] = (n* 2) + 1;
}
for(int i = 0; i < 500; i++)
{
//finds prime numbers
for(int n = 0 ; n < 500; n++)
{
//divides the odd numbers by the current mod value
remainder = oddArray[n] % modArray[x];
//if remainder is not 0 it will place a value in prime array
if(remainder != 0)
{
primeArray[p] = oddArray[n];
p++;
}
}
//prints out list of odds/mod/and primes side by side
System.out.println(oddArray[i] + " | " + modArray[i] + " | " + primeArray[p]);
++x;
}
int[]oddArray=newint[500]//保存所有奇数
int[]素数数组=新的int[500]//保存所有素数
int[]modArray=新int[500]//保存所有mod值
整数余数,p=0,x=0;
//填充oddArray和modArray
对于(int n=0;n<500;n++)
{
oddArray[n]=(n*2)+1;
modArray[n]=(n*2)+1;
}
对于(int i=0;i<500;i++)
{
//查找素数
对于(int n=0;n<500;n++)
{
//将奇数除以当前mod值
余数=ODDRARY[n]%modArray[x];
//若余数不是0,它将在素数数组中放置一个值
如果(余数!=0)
{
primeArray[p]=oddArray[n];
p++;
}
}
//并排打印赔率/模/和素数列表
System.out.println(oddArray[i]+“|”+modArray[i]+“|”+primeArray[p]);
++x;
}
这是错误代码
1 | 1 | 0
3 | 3 | 0
线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:500
在projectprime_v1.projectprime_v1.main(projectprime_v1.java:41)
Java结果:1
生成成功(总时间:0秒)
您永远不会重置
p
,因此最终它将超过499,并导致异常。确保在循环中写入p=0代码>重置它。这同样适用于x
希望这有帮助 您是否尝试使用调试器a)确定哪一行有问题,b)用于索引数组的变量值是什么?请参阅循环顶部的更新应答器。第一次运行时它已经是0了,但谁在乎呢。@draco18是对的。只要它在循环中的某个地方重置。