Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在数组中间位置插入int_Java_Arrays_Int - Fatal编程技术网

Java 在数组中间位置插入int

Java 在数组中间位置插入int,java,arrays,int,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

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

    }   

}
import java.util.Random;
公共类Zadanie5_3{
公共静态void main(字符串[]args){
Random rand=新的Random();
int[]tab=新int[20];
对于(int i=0;i tab.length/2;j--){
tab[j]=tab[j--];
页签【页签长度/2】=-1;
系统输出打印项次(表[j]);
}
}   
}

问题在第二个for循环中

tab[j]=tab[j--]

j--
会将j的值减少1。因此,在每次迭代中,j将减少2,而不是1

tab[j]=tab[j-1]
是正确的解决方案。

导入java.util.Random;
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
公共类Zadanie5_3{ 公共静态void main(字符串[]args){ Random rand=新的Random(); int[]tab=新int[20]; 对于(int i=0;i=9;j--){ tab[j]=tab[j-1]; } 表[9]=-1; //印刷品
对于(int i=0;i您应该将第二个for循环分成两个循环。第一个循环将数组的上半部分上移一个索引。第二个循环输出完整的数组

在第一个循环中,放置语句:

        tab[j] = tab[j--];
        tab[j] = tab[j - 1];
但是,您必须调整此语句,因为
j--
实际上减少了
j
。请用此语句替换它:

        tab[j] = tab[j--];
        tab[j] = tab[j - 1];

在这两个循环之间,你将“代码> -1”/代码>分配给中间的索引。这个操作不属于一个循环,因为它只需要执行一次。而且,它只应该在其他元素的移位完成之后执行,否则你就重写当前在中间的元素。在中间元素中插入-1时,是否要将数组向右移动?