2017-04-07 70 views
0

它編譯正確,但是當它運行時,它會打印數字數組,然後出現一堆錯誤。我怎麼能讓方法左移?如何將數組左移?

public class ArrayLeftShift { 
public static void main(String[] args) { 
    int[] myList = {95, -10, 23, -3, 78}; 

    System.out.print("myList: "); 
    printArray(myList); 

    leftShift(myList); 
    System.out.print("After left shift: "); 
    printArray(myList);  
} 

public static void leftShift(int[] list) { 
int other = list[list.length+1]; 

for (int i = list.length+2; i >= 0; i++) 
    list[i-1] = list[i]; 

list[0] = other; 
System.out.print("\nshifted Array: "); 
} 

public static void printArray(int[] list) { 
for (int d: list) 
    System.out.print(d + " "); 
System.out.println(); 
} 

} 
+0

輸出是什麼。給出了什麼錯誤。 –

+0

您的for循環開始於+ 2,並永遠運行。 – stark

+0

語言標籤很重要。 – crashmstr

回答

0
public static int[] leftShift(int[] a) { 
    int[] r = new int[a.length]; 
    for (int i = 0; i < a.length - 1; i++) 
     r[i] = a[i+1]; 
    r[a.length - 1] = a[0]; 
    return r; 
} 

如果你想一切左移和包裝的第一個值回最終這應該工作....

+0

這確實做到了,謝謝 – DissolvedMan

+0

請問您能標記正確嗎? –

0

您期望得到的輸出是什麼?

它是「-10 23 -3 78」嗎?

或循環左移「-10 23 -3 78 95」?

我會去的循環和實現這樣的:

public static void leftShift(int[] list) { 
    int first = list[0]; 

    for (int i = 0; i < list.length - 1; i++) { 
    list[i] = list[i+1]; 
    } 

    list[list.length - 1] = first; 
} 
+0

OP正試圖在原地轉移,雖然 – njzk2

+0

@ njzk2您是正確的,已進行相應編輯。 –