在数组中间位置插入int

时间:2016-04-05 17:40:04

标签: java arrays int

任务是创建一个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]); 
        }

    }   

}

3 个答案:

答案 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分配给中间的索引。此操作不属于循环,因为它只需执行一次。此外,它只应在完成其他元素的移位后执行,因为否则您将覆盖当前位于中间的元素。