Java 怎样移动数组的位置~比如1 2 3 4 5 6 移动M位,比如2位,变成3 4 5 6 1 2

 我来答
风泪浅无痕
2012-11-04 · TA获得超过125个赞
知道答主
回答量:100
采纳率:100%
帮助的人:76.8万
展开全部
import java.util.Scanner;
public class ShuZu_yiwei{

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
System.out.println("请输入原数组的数组元素,每个数组元素之间用空格隔开:");
String s = input.nextLine();
String []str = s.split(" ");//把字符串s按照空格划分,然后存储到数组str中
System.out.println("请输入要移动的数组元素个数:");
int M = input.nextInt();
String []array = new String[M];
String []barray = new String[str.length-M];
String []carray = new String[str.length];
System.arraycopy(str, 0, array, 0, M);//把原数组的前面M个复制到array中
System.arraycopy(str, M, barray, 0, barray.length);//把原数组的后str.length-M个复制到array中
System.arraycopy(barray,0,carray,0,barray.length);//把原数组的后str.length-M拷贝到目标数组中的前0到str.length-M,
System.arraycopy(array,0,carray,barray.length,array.length);//把原数组前面M个元素拷贝目标数组的后str.length-M到str.length
System.out.println("移动后的数组为:");
for(int i=0;i<carray.length;i++)//打印目标数组的每一个元素
{
System.out.print(carray[i]+" ");
if((i+1)%10==0){//每行输出是个数组元素
System.out.println();
}
}
}
}
yg359547115
2012-11-04 · 超过29用户采纳过TA的回答
知道答主
回答量:62
采纳率:0%
帮助的人:76.2万
展开全部
楼上的太过复杂了。

我仅给楼主提供个示例与其函数的算法,最后如何综合,就看楼主的做法啦

希望能帮到你

public class SomeToMove{
public static void main(String[] args){
int[] arr=new int[]{6,5,7,2,6,1,4,3};
int[] b=arrMoveDemo(arr,4);//arr为数组,4为移动的位数
for(int i=0;i<b.length;i++){
System.out.print(b[i]+" ");
}
}
public static int[] arrMoveDemo(int[] a,int x){
for(int i=0;i<x;i++){
int temp=a[0];
for(int j=1;j<a.length;j++){
a[j-1]=a[j];
}
a[a.length-1]=temp;
}
return a;
}
}
追问
我是移动的次数啊~
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友282b395
2012-11-04 · TA获得超过228个赞
知道小有建树答主
回答量:2779
采纳率:0%
帮助的人:620万
展开全部
public class a {
/**
* @param args
*/
public static void main(String[] args) {
int a[]={1,2,3,4,5,6};
int t=2;
for(int i=0;i<a.length ;i++){
if(i>=t){
System.out.print(a[i]+" ");

}

}
for(int i=0;i<a.length ;i++){
if(i<t){
System.out.print(a[i]+" ");

}

}
}

}
我把他做死了~~你可以到时封装成一个函数,传人一个数组和移动的位数·~
追问
这个可以,原理是怎样的?能解释下嘛
追答
就是我写的那样啊
你有那个地方还不明白吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sfhk566
2012-11-04
知道答主
回答量:16
采纳率:0%
帮助的人:15.2万
展开全部
public class Demo <T>{
private T[] aa;
public T[] movei(T[] a, int i){
int k=i;
int len = a.length;
aa =(T[]) new Object[len];
for(;k<len;k++)
aa[k-i] = a[k];
for(int j=0;j<i;j++,k++)
aa[k-i]=a[j];
return aa;
}
public void printi(){
for(int i=0;i<aa.length;i++)
System.out.println(aa[i]);
}
}

测试(在main里面加入):

Demo<Integer> demo = new Demo<Integer>();
Integer[] a = new Integer[]{1,2,3,4,5};
int i = 2;
demo.movei(a, i);
demo.printi();
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chenbiren
2012-11-04
知道答主
回答量:12
采纳率:0%
帮助的人:6.4万
展开全部
做成循环的数组就行了
追问
我知道,怎样循呢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式