how2j.cn


工具版本兼容问题
数组的长度是不可变的,一旦分配好空间,是多长,就多长,不能增加也不能减少


本视频是解读性视频,所以希望您已经看过了本知识点的内容,并且编写了相应的代码之后,带着疑问来观看,这样收获才多。 不建议一开始就观看视频



5分14秒
本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器。 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)。 chrome 的 视频下载插件会影响播放,如 IDM 等,请关闭或者切换其他浏览器



步骤 1 : 复制数组   
步骤 2 : 练习-合并数组   
步骤 3 : 答案-合并数组   

把一个数组的值,复制到另一个数组中

System.arraycopy(src, srcPos, dest, destPos, length)

src: 源数组
srcPos: 从源数组复制数据的起始位置
dest: 目标数组
destPos: 复制到目标数组的起始位置
length: 复制的长度
public class HelloWorld { public static void main(String[] args) { int a [] = new int[]{18,62,68,82,65,9}; int b[] = new int[3];//分配了长度是3的空间,但是没有赋值 //通过数组赋值把,a数组的前3位赋值到b数组 //方法一: for循环 for (int i = 0; i < b.length; i++) { b[i] = a[i]; } //方法二: System.arraycopy(src, srcPos, dest, destPos, length) //src: 源数组 //srcPos: 从源数组复制数据的起始位置 //dest: 目标数组 //destPos: 复制到目标数组的启始位置 //length: 复制的长度 System.arraycopy(a, 0, b, 0, 3); //把内容打印出来 for (int i = 0; i < b.length; i++) { System.out.print(b[i] + " "); } } }
步骤 2 :

练习-合并数组

edit  姿势不对,事倍功半! 点击查看做练习的正确姿势
首先准备两个数组,他俩的长度是5-10之间的随机数,并使用随机数初始化这两个数组
(向数组填充随机数的办法,参考这里)

然后准备第三个数组,第三个数组的长度是前两个的和
通过System.arraycopy 把前两个数组合并到第三个数组中
练习-合并数组
步骤 3 :

答案-合并数组

edit
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
查看本答案会花费3个积分,您目前总共有点积分。查看相同答案不会花费额外积分。 积分增加办法 或者一次性购买JAVA 基础总计0个答案 (总共需要0积分)
查看本答案会花费3个积分,您目前总共有点积分。查看相同答案不会花费额外积分。 积分增加办法 或者一次性购买JAVA 基础总计0个答案 (总共需要0积分)
账号未激活 账号未激活,功能受限。 请点击激活
本视频是解读性视频,所以希望您已经看过了本答案的内容,带着疑问来观看,这样收获才多。 不建议一开始就观看视频

3分24秒 本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器。 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)。 chrome 的 视频下载插件会影响播放,如 IDM 等,请关闭或者切换其他浏览器


public class HelloWorld { public static void main(String[] args) { int a[] = new int[(int) (Math.random() * 5)+5]; for (int i = 0; i < a.length; i++) a[i] = (int) (Math.random() * 100); int b[] = new int[(int) (Math.random() * 5)+5]; for (int i = 0; i < b.length; i++) b[i] = (int) (Math.random() * 100); System.out.println("数组a的内容:"); for (int i : a) { System.out.print(i+" "); } System.out.println(); System.out.println("数组b的内容:"); for (int i : b) { System.out.print(i+" "); } System.out.println(); int c[] = new int[a.length+b.length]; System.arraycopy(a, 0, c, 0, a.length); System.arraycopy(b, 0, c, a.length, b.length); System.out.println("数组c的内容:"); for (int i : c) { System.out.print(i+" "); } } }


HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。


问答区域    
2023-07-28 练习
tkc030526




0-0
import java.util.Random;
import java.util.Arrays;

public class MergeArrays {
    public static void main(String[] args) {
        Random random = new Random();
        
        int length1 = random.nextInt(6) + 5; // 生成5-10之间的随机长度
        int length2 = random.nextInt(6) + 5;
        
        int[] array1 = new int[length1];
        int[] array2 = new int[length2];
        
        // 使用随机数初始化数组1
        for (int i = 0; i < length1; i++) {
            array1[i] = random.nextInt(100); // 假设随机数范围为0-99
        }
        
        // 使用随机数初始化数组2
        for (int i = 0; i < length2; i++) {
            array2[i] = random.nextInt(100);
        }
        
        int length3 = length1 + length2;
        int[] array3 = new int[length3];
        
        // 将数组1复制到数组3的起始位置
        System.arraycopy(array1, 0, array3, 0, length1);
        
        // 将数组2复制到数组3的后半部分
        System.arraycopy(array2, 0, array3, length1, length2);
        
        // 打印数组1
        System.out.println("Array1: " + Arrays.toString(array1));
        
        // 打印数组2
        System.out.println("Array2: " + Arrays.toString(array2));
        
        // 打印数组3
        System.out.println("Array3: " + Arrays.toString(array3));
    }
}

							


6 个答案

Tian0208jie
答案时间:2024-03-05
javanoobbbb
答案时间:2023-12-26
答案

后山人
答案时间:2023-10-07
数组A中的数: 9 32 287 350 398 594 554 99 613 数组B中的数: 28 59 110 37 492 362 467 数组C中的数: 9 32 287 350 398 594 554 99 613 28 59 110 37 492 362 467

一坤年的鸡
答案时间:2023-09-03
public class hero{ public static void main(String[] args){ int []a=new int[(int)(Math.random()*5)+5]; for(int i=0;i<a.length;i++) a[i]=(int)(Math.random()*100); int []b=new int[(int)(Math.random()*5)+5]; for(int i=0;i<a.length;i++) b[i]=(int)(Math.random()*100); int []sum=new int[(a.length+b.length)]; System.arraycopy(a,0,sum,0,a.length); System.arraycopy(b,0,sum,a.length,b.length); for(int each:a) System.out.print(each+"\t"); System.out.println(); for(int each:b) System.out.print(each+"\t"); System.out.println("\n******************************************"); for(int each:sum) System.out.print(each+"\t"); } }

加长版海贼
答案时间:2023-08-08
tkc030526
答案时间:2023-07-28
random.nextInt(6)生成一个0到5之间的随机数,然后将其加上5。这样可以生成一个5到10之间的随机长度



回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2023-02-08 为什么我这个代码运行下来有时候就出错有时候不出错,是因为数组溢出了吗
lieying




为什么我这个代码运行下来有时候就出错有时候不出错,是因为数组溢出了吗
public static void main(String[] args) {
        int x = (int) ((Math.random()+1)*5);
        int y = (int) ((Math.random()+1)*5);
        int a[]=new int[x];
        int b[]=new int[y];
        for (int i=0;i<x;i++){
            a[i]= (int)(Math.random()*100);
        }
        System.out.print("a数组为");
        for (int i=0;i<a.length;i++){
            System.out.print(a[i]+" ");
        }
        System.out.println(" ");
        System.out.print("b数组为");
        for (int i=0;i<x;i++){
            b[i]= (int)(Math.random()*100);
        }
        for (int i=0;i<b.length;i++){
            System.out.print(b[i]+" ");
        }
        System.out.println(" ");
        int c[]=new int[a.length+b.length];
        System.arraycopy(a,0,c,0,a.length);
        System.arraycopy(b,0,c,a.length,b.length);
        System.out.print("c数组为");
        for (int i=0;i<c.length;i++){
            System.out.print(c[i]+" ");
        }
        System.out.println(" ");
        for(int i=0;i<c.length;i++){
            for (int j=0;j<c.length-i-1;j++){
                if (c[j]>c[j+1]){
                    int temp=c[j];
                    c[j]=c[j+1];
                    c[j+1]=temp;
                }
            }
        }
        System.out.print("c数组排序后为");
        for (int i=0;i<c.length;i++){
            System.out.print(c[i]+" ");
        }
    }

							


7 个答案

Asure47
答案时间:2024-03-04
freedomras
答案时间:2023-08-18
Aiye
答案时间:2023-04-02
1873871241
答案时间:2023-03-20
月沉
答案时间:2023-03-15
ahao2025
答案时间:2023-03-10
int m = (int) (Math.random() * 5) + 5; int n = (int) (Math.random() * 5) + 5; int[] a = new int[m]; int[] b = new int[n]; int[] c = new int[m + n]; for (int i = 0; i < a.length; i++) a[i] = (int) (Math.random() * 100); for (int i = 0; i < b.length; i++) b[i] = (int) (Math.random() * 100); for (int i : a) System.out.print(i + " "); System.out.println(); for (int i : b) System.out.print(i + " "); System.out.println(); System.arraycopy(a, 0, c, 0, a.length); System.arraycopy(b, 0, c, m, b.length); for (int i : c) System.out.print(i + " ");

六月听雪
答案时间:2023-02-15
System.out.print("b数组为"); for (int i=0;i<b.length.;i++){ // 给数组b赋值时,i的取值范围应该是i<b.length,或者i<y,你写的是 i<x b[i]= (int)(Math.random()*100); }



回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2022-08-24 合并数组答案
2022-07-12 小白求教!
2022-06-27 复制数组


提问太多,页面渲染太慢,为了加快渲染速度,本页最多只显示几条提问。还有 146 条以前的提问,请 点击查看

提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
关于 JAVA 基础-数组-复制数组 的提问

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 578362961
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
在已经存在的几千个提问里,有相当大的比例,是因为使用了和站长不同版本的开发环境导致的,比如 jdk, eclpise, idea, mysql,tomcat 等等软件的版本不一致。
请使用和站长一样的版本,可以节约自己大量的学习时间。 站长把教学中用的软件版本整理了,都统一放在了这里, 方便大家下载: https://how2j.cn/k/helloworld/helloworld-version/1718.html

上传截图