2017-04-07 45 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您是正确的,已进行相应编辑。 –