Java ArrayIndexOutofBounds阵列访问异常
下午好!我必须创建2个数组。第一,如果用户写入0,则应创建一个随机数(-10;10),否则应使用输入的公式进行计数;第二个数组应首先写入数组1中位置数不均匀的元素,然后写入位置数为偶数的元素。所以基本上在数组中2 0-10个位置表示不均匀数,然后11-19个位置表示偶数。 但不幸的是,当我“运行”程序时,第二个数组有一个错误: 线程“main”java.lang.ArrayIndexOutOfBoundsException中出现异常:索引20超出长度20的界限)Java ArrayIndexOutofBounds阵列访问异常,java,arrays,variable-length-array,Java,Arrays,Variable Length Array,下午好!我必须创建2个数组。第一,如果用户写入0,则应创建一个随机数(-10;10),否则应使用输入的公式进行计数;第二个数组应首先写入数组1中位置数不均匀的元素,然后写入位置数为偶数的元素。所以基本上在数组中2 0-10个位置表示不均匀数,然后11-19个位置表示偶数。 但不幸的是,当我“运行”程序时,第二个数组有一个错误: 线程“main”java.lang.ArrayIndexOutOfBoundsException中出现异常:索引20超出长度20的界限) intk; 系统输出打印(“K=
intk;
系统输出打印(“K=”);
if(sc.hasnetint())
K=sc.nextInt();
否则{
System.out.println(“错误(不是整数)”;
sc.close();
回来
}
双A[]=新双[20];
双B[]=新双[20];
System.out.println(“结果:”);
System.out.println(“A:”);
如果(K==0){
随机r=新随机();
对于do while循环中的(int i=0;i)
p=0 -> p is even, 'even' get incremented and become 12.
p=2 -> p is even, 'even' get incremented and become 13.
...
p=14 -> p is even, 'even' get incremented and become 19.
p=16 -> p is even, 'even' get incremented and become 20. <- game over!
你看到模式了吗
对于偶数p
和奇数p
新指数应分别为10+(p/2)
do {
if (p%2==0) { //p is even
B[10+(p/2)]=A[p];
}
if (p%2!=0) { //p is odd
B[(p/2)]=A[p];
}
p++;
} while (p<20);
do{
如果(p%2==0){//p是偶数
B[10+(p/2)]=A[p];
}
如果(p%2!=0){//p是奇数
B[(p/2)]=A[p];
}
p++;
}(p进行以下更改时,代码将很好地运行
double B[]=新的double[21];
do
{
int z = p;
if (z % 2 == 0)
{
B[even] = A[p];
even++;
}
else
{
B[uneven] = A[p];
uneven++;
}
p++;
}
while (p < 19);
do
{
int z = p;
if (z % 2 == 0)
{
B[even] = A[p];
even++;
}
else
{
B[uneven] = A[p];
uneven++;
}
p++;
}
while (p < 19);
if (p % 2 == 0)