【发布时间】:2020-03-09 10:53:53
【问题描述】:
下午好!我必须创建 2 个数组。如果用户写 0,第一个应创建一个随机数 (-10;10),否则应使用输入的公式计数;第二个数组应该首先写入数组1中位置数不均匀的元素,然后是偶数个位置。所以基本上在 array2 0-10 位置表示奇数,然后在 11-19 位置表示偶数。 但不幸的是,当我“运行”程序第二个数组时出现错误:
线程“main”java.lang.ArrayIndexOutOfBoundsException 中的异常:索引 20 超出长度 20 的范围。
int K;
System.out.print("K=");
if (sc.hasNextInt())
K=sc.nextInt();
else {
System.out.println("Error (is not an integer)");
sc.close();
return;
}
double A[]=new double [20];
double B[]=new double [20];
System.out.println ("result:");
System.out.println ("A: ");
if (K==0) {
Random r=new Random();
for (int i=0; i<20;i++) {
A[i]=-10+20*r.nextDouble();
}
}
if (K!=0) {
A[0]=1;
for (int i=1;i<20;i++) {
double a=Math.sin(A[i-1])*K;
A[i] = Math.round(a * 100.0) / 100.0;
}
}
int i=0;
while (i<20) {
System.out.printf("%.2f", A[i]); System.out.print(" ");
if (i==9) System.out.println();
i++;
}
System.out.println ();
System.out.println ("B: ");
int even=11, uneven=0, p=0;
do {
int z=p;
if (z%2==0) {
B[even]=A[p];
even++;
}
if (z%2!=0) {
B[uneven]=A[p];
uneven++;
}
p++;
} while (p<20);
for (int k=0; k<20;k++) {
System.out.printf ("%.2f",B[k]); System.out.print(" ");
if (k==9) System.out.println();
}
【问题讨论】:
标签: java arrays variable-length-array