You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java实现数组指定位置拆分后前半部分移至末尾的错误排查

代码执行流程分析

你编写的代码当前仅实现了将数组第一个元素移动到末尾的逻辑,完整执行流程如下:

  1. 初始化数组int a[]= {12,10,5,6,52,36},数组长度n=6,变量x存储数组第一个元素的值12
  2. 执行内层for循环(i从0到4):
    循环内逻辑实际是将数组所有元素依次向前挪一位,你写的第二行temp=a[i];属于冗余代码,定义的temp变量全程没有参与有效赋值,循环结束后数组变为{10,5,6,52,36,36}
  3. 执行a[n-1]=x,将数组最后一位赋值为x存储的12,最终数组变为{10,5,6,52,36,12},和你得到的输出一致。
代码存在的问题
  • 没有控制移动次数的外层逻辑:你现在只执行了1次元素前移操作,仅能移动1个元素到末尾,要移动k个元素就需要把整套前移逻辑执行k次
  • 冗余代码:循环内的第二行temp=a[i];没有任何作用,属于无效代码
  • 没有抽象出k变量:现在写死了仅处理第一个元素,无法适配不同的拆分位置需求
修正后的实现

按照你现有的逻辑调整,只需要在外层加k次循环即可适配需求:

public class Split_array_add_first_part_to_the_end {
    public static void main(String[] args) {  
        int a[]= {12,10,5,6,52,36};
        int k = 2; // 拆分位置
        int n = a.length;
        // 处理k大于数组长度的情况,避免无效循环
        k = k % n;
        
        // 外层循环执行k次,每次移动一个元素到末尾
        for (int j = 0; j < k; j++) {
            int x = a[0];
            for (int i = 0; i < n-1; i++) {
                a[i] = a[i+1];
            }
            a[n-1] = x;
        }
        
        // 输出结果
        for(int i=0;i<n;++i) {
            System.out.println(a[i]);
        }
    }
}

运行后即可得到预期输出{5,6,52,36,12,10}。

内容的提问来源于stack exchange,提问作者Ksha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 02:24:02