Java 怎样移动数组的位置~比如1 2 3 4 5 6 移动M位,比如2位,变成3 4 5 6 1 2
展开全部
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();
}
}
}
}
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();
}
}
}
}
展开全部
楼上的太过复杂了。
我仅给楼主提供个示例与其函数的算法,最后如何综合,就看楼主的做法啦
希望能帮到你
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;
}
}
我仅给楼主提供个示例与其函数的算法,最后如何综合,就看楼主的做法啦
希望能帮到你
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;
}
}
追问
我是移动的次数啊~
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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]+" ");
}
}
}
}
我把他做死了~~你可以到时封装成一个函数,传人一个数组和移动的位数·~
/**
* @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]+" ");
}
}
}
}
我把他做死了~~你可以到时封装成一个函数,传人一个数组和移动的位数·~
追问
这个可以,原理是怎样的?能解释下嘛
追答
就是我写的那样啊
你有那个地方还不明白吗
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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();
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();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
做成循环的数组就行了
追问
我知道,怎样循呢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询