JAVA中copyOfRange实现数组首元素删除并提取删除的数据

1.项目场景

在做AHP评价系统过程中,用到的判断矩阵是一个沿着对角线的倒数对称的数字矩阵。用户只需要输入对角线上的数字,便会自动生成全部矩阵。
如下图所示:
在这里插入图片描述

2. 需求

用户输入的数字存在一个数组的中【3, 7,3, 5,5, 3,5,。。。。】,需要按照索引顺序从前往后将该数组的值 添加到一个二维数组对角线以上。 如下图的紫色部分。
在这里插入图片描述


提示:以下是本篇文章正文内容,下面案例可供参考

3. 实现:

思考
1.对角线以上的二维矩阵所在索引,我们可以用俩个for循环来实现。第一个循环遍历行(维度),第二个遍历表示该行第几个元素。
2. 数组的元素是从前往后提取。其实这种方式类似于队列,先进去的需要先提取。但是现在数组已经输入完毕是固定的。可以用指针指在第一个元素,每次提取只第一个元素,提取后指针往后移动一个。java中的数组没有直接提取首个元素的方法,并且初始化后的数组长度是固定的不能改变。

代码实现思路:
先取数,每次取完第一个元素A【0】之后,利用数组拷贝把刚才取得数删除,此时索引0指针继续指在新数组的首个元素,但是已经是原数组的后一个数上。
拷贝截取后的数组如下:
述述

代码:

   for (int i = 0; i < n; i++) {
            for (int j = i + 1; j < n; j++) {
                Double v = num[0];
                if (num.length >= 1) {
                    num = Arrays.copyOfRange(num, 1, num.length);  //删除第一个元素
                }

                ahpDemoClass.matrix[i][j] = v;  //赋值到二维数组中使用
            }
        }

copyOfRange 数组拷贝的参数
T[] original,: 原数组
int from, : 拷贝开始的索引
int to: 拷贝 结束的索引

源代码:

 public static <T> T[] copyOfRange(T[] original, int from, int to) {
        return copyOfRange(original, from, to, (Class<? extends T[]>) original.getClass());
    }

剩余项的输入:

       System.out.println("根据输入值自动填写矩阵剩余项");
        //对角线上的数字
        for (int i = 0; i < N_mat; i++) {
            matrix[i][i] = 1.0;
        }
        for (int i = N_mat - 1; i >= 0; i--) {
            for (int j = N_mat - 1; j >= 0; j--) {
                matrix[i][j] = 1 / matrix[j][i];
            }
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值