Java 编程问题 求大神写完整过程 谢谢~

2025-04-04 08:11:29
推荐回答(4个)
回答1:

我简单写了一个例子,可以参考下:

import java.util.Arrays;

public class IntegerArrayMoveExample {

public static void main(String[] args) {
// test
int[] arr={1,2,3,4,5,6,7,8,9,0};
arrayMove(arr,5);
}

/**
 * 数组向右移动m位
 * @param arr 原数组
 * @param position 向右移动的位数,即m
 */
public static void arrayMove(int[] arr, int position) {
// output array
System.out.println("arr:    "+Arrays.toString(arr));
// 移动的位数m大于数组长度,求余数
int len = arr.length;
if (position>len) {
position=position%len;
}

int[] newArr=new int[len];
// 先移动原数组后面的m位,放到新数组0~m-1位置
System.arraycopy(arr, len-position-1, newArr, 0, position);
// 再将原数组的0~len-m-1放到新数组的从m位置开始
System.arraycopy(arr, 0, newArr, position, len-position);

// output new array
System.out.println("newarr: "+Arrays.toString(newArr));
}

}

输出结果:

arr:    [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]

newarr: [5, 6, 7, 8, 9, 1, 2, 3, 4, 5]

有不懂地方可以问我。

回答2:

public class MinimalElements {



public static void main(String[] args){

Scanner sc=new Scanner(System.in);
System.out.println("请输入n和m的值:");
int n=sc.nextInt(),m=sc.nextInt();
int a[]=new int[n];
for(int i=0;i System.out.println("请输入数组a的第"+(i+1)+"个元素:");
a[i]=sc.nextInt();
}
for(int i=0;i System.out.print("数组a的第"+(i+1)+"个元素为:"+a[i]+"\n");
}

int l=a.length-1;
int[] clone=a.clone();//需要克隆一个新的数组,因为之前的数组在第一次排序后各个元素的值都改变了
for(int i=l;i>=0;i--){
int p=i-m;
if(p>=0){int zan=a[p];a[p]=a[i];a[i]=zan;}
else{p=p+1; a[l+p]=clone[i];
}
}

System.out.println("往后移了"+m+"位的数组为");

for(int i=0;i System.out.print("数组a的第"+(i+1)+"个元素为:"+a[i]+"\n");
}
}
}

回答3:

10个币没人做的

回答4:

利用数组复制方法