任务是创建一个20个元素的int
数组,并用从索引0到索引18的随机整数填充它。然后我想在中间插入-1并打印整个数组。但是我的代码有问题。
import java.util.Random;
public class Zadanie5_3{
public static void main(String[] args){
Random rand = new Random();
int[] tab = new int[20];
for(int i = 0; i <= 18; i++){
tab[i] = rand.nextInt();
}
for(int j = 19; j > tab.length/2; j--){
tab[j] = tab[j--];
tab[tab.length/2] = -1;
System.out.println(tab[j]);
}
}
}
答案 0 :(得分:1)
问题出现在第二个for循环中。
tab[j] = tab[j--];
j--
会将j的值减少1.因此,在每次迭代中,j将减少2而不是1。
tab[j] = tab[j - 1];
是正确的解决方案。
答案 1 :(得分:0)
import java.util.Random;
public class Zadanie5_3 {
public static void main(String[] args){
Random rand = new Random();
int[] tab = new int[20];
for(int i = 0; i <= 18; i++){
tab[i] = rand.nextInt();
}
for(int j = 19; j >= 9; j--){
tab[j] = tab[j-1];
}
tab[9] = -1;
// print
for(int i = 0; i <= 18; i++){
System.out.println(tab[i]);
}
}
}
result:
1956305001
-2096126360
98350219
1446603176
1822536231
-585584710
1907161554
-1249344271
330285354
-1
-2035667564
935350135
178577755
1025860367
-965180067
1164224066
1726709678
1615705033
-1258924041
答案 2 :(得分:0)
您应该将第二个for循环分成两个循环。第一个循环将数组的上半部分向上移动一个索引。第二个循环输出完整的数组。
在第一个循环中,放置语句:
tab[j] = tab[j--];
但是,您必须调整此语句,因为j--
实际上会减少j
。将其替换为以下声明:
tab[j] = tab[j - 1];
在这两个循环之间,将-1
分配给中间的索引。此操作不属于循环,因为它只需执行一次。此外,它只应在完成其他元素的移位后执行,因为否则您将覆盖当前位于中间的元素。