本文目錄一覽:
- 1、Java怎樣把數組的元素向左移動?比如把一個數組arr{12 34 45 56 67 78 }移動2次變得45 56 67 78 12 34
- 2、Java 怎樣移動數組的位置~比如1 2 3 4 5 6 移動M位,比如2位,變成3 4 5 6 1 2
- 3、java數組整體移位問題?如將{1,3,1,2,3,2,3,2}移成{1,1,2,2,2,3,3,3} 如何高效實現。
- 4、JAVA數組移位
Java怎樣把數組的元素向左移動?比如把一個數組arr{12 34 45 56 67 78 }移動2次變得45 56 67 78 12 34
當然實現的方法是比較多的,這裡給出一種:
//arr循環左移times次
function shiftArr(arr, times){
times = times%(arr.length);//考慮times大於等於length的情況
return arr.slice(times).concat(arr.slice(0, times));
//取出兩個子數組然後連接
}
其他的思路有刪除arr前若干個元素並添加到其末尾等(參考Array對象的方法)。
如有問題歡迎繼續交流!
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;icarray.length;i++)//打印目標數組的每一個元素
{
System.out.print(carray[i]+” “);
if((i+1)%10==0){//每行輸出是個數組元素
System.out.println();
}
}
}
}
java數組整體移位問題?如將{1,3,1,2,3,2,3,2}移成{1,1,2,2,2,3,3,3} 如何高效實現。
就是把裡面所有的3移動到最後,其他的順序前移?沒法可選的時候我會用遍歷,循環來做。
public class ClassB {
public static void main(String… arg){
int [] a = {1,3,2,4,65,21,3,546,3,2,1};
for(int i=0;ia.length;i++){
if(a[i]==3){
int n =i;
for(int j=n+1;ja.length;j++){
a[n]=a[j];
n++;
}
a[a.length-1]=3;
}
}
for(int i =0;ia.length;i++){
System.out.print(a[i]+” “);
}
}
}
方法笨一點,用還是可以用的
1 2 4 65 21 546 2 1 3 3 3
JAVA數組移位
我看不懂,你到底是在平移數組元素還是把指定下標的元素變成默認值?第五個元素原來是4你怎麼把它變成0了?
下標越界是肯定的。數組一旦被定義,長度就是不變的。與其說是平移,你這個其實是插入操作,在指定的下標插入默認值。一旦插入新元素,數組的元素個數會變長,但這是不允許的,所以肯定會有下標越界異常。
如果你真的是要插入一個默認元素的話你無法在原來的數組上進行操作,只能聲明一個新的數組,長度比原來數組長1,然後把舊的元素複製到新的數組,插入默認值,然後再把array的引用指向新數組。可以這樣:
int[] array={0,1,2,3,4,5,6,7,8,9};
int[] temp=new int[array.length+1]; //
int k; //k為指定下標,假設已知
for(int i=0;ik;i++)
temp[i]=array[i]; //複製下標前的元素
temp[k]=0; //設置默認值
for(int i=k;iarray.length;i++)
temp[i+1]=array[i]; //複製下標後的元素
array=temp; //改變數組引用
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/277447.html