2017-09-03 3 views
-4

배열을 왼쪽으로 이동하려고합니다. 예를 들어 원래 배열이 '1,2,3,4'이면 변환 된 배열이 '2,3,4, 1 ', 이것은 내가 지금까지 가지고있는 그리고 나는 누락 된 반환 문 오류를 계속, 어떻게 그것을 고정에 대해 갈까요?배열을 왼쪽으로

public int shift (int [] d){ 

    for(int from =1; from <= d.length-1; from++) 
     d[from-1]= d[from]; 

     System.out.println ("d[from]"+",d[0]"); 
    } 
+4

return 문을 놓치고 있기 때문에 예, 그건. – shmosel

+1

메서드에서 'int'를 반환한다고해도 "return 문이없는 오류가 계속 발생합니다"오류가 발생하기 때문에 반환하지 않습니다. – tkausl

+0

또한'd [0]'의 초기 값을 유지해야하므로 최종 배열의 마지막 요소에 할당 할 수 있습니다. 그리고 당신의'println'은 당신이 의도 한 것을 인쇄하지 않을 것입니다. –

답변

0
어쩌면 크기 제로의 배열, 그리고 당신이 "경계 예외에서 인덱스"를 얻을 수 있음을
public static void shift(int[] arr, int offs) { 
    // e.g. arr = 1,2,3,4,5,6,7,8,9; offs = 3 
    offs %= arr.length; 
    offs = offs < 0 ? arr.length + offs : offs; 

    if (offs > 0) { 
     // reverse whole array (arr = 9,8,7,6,5,4,3,2,1) 
     for (int i = 0, j = arr.length - 1; i < j; i++, j--) 
      swap(arr, i, j); 
     // reverse left part (arr = 7,8,9,6,5,4,3,2,1) 
     for (int i = 0, j = offs - 1; i < j; i++, j--) 
      swap(arr, i, j); 
     // reverse right part (arr = 7,8,9,1,2,3,4,5,6) 
     for (int i = offs, j = arr.length - 1; i < j; i++, j--) 
      swap(arr, i, j); 
    } 
} 

private static void swap(int[] arr, int i, int j) { 
    int tmp = arr[i]; 
    arr[i] = arr[j]; 
    arr[j] = tmp; 
} 
-1
public int shift (int[] d) { 

    for(int from =1; from <= d.length-1; from++) 
     d[from-1]= d[from]; 

    System.out.println ("d[from]"+",d[0]"); 
    return d.length=0?0:d[0]; 
} 

참고.

+2

안녕하세요,이 부분을 설명하는 마음입니까? d.length = 0? 0 : d [0] – Melanie

0

논리는 맞지만 코드에서 일부 수정이 필요합니다. 자바는 객체가 아닐 값의 참조를 전달하기 때문에

int data[]={1,2,3,4}; 

shift(data); 

//print out Shifted Array 
for(int n : data){ 
    System.out.println(n); 
} 

    public void shift(int[] d){ 
     int f=d[0]; // Store first index 

     int from=1; 
     for(;from<d.length;from++){ 
      d[from-1]=d[from]; 
     }  

     d[from-1]=f; //set first index to the last index 
    } 

당신은 데이터를 반환 할 필요가 없습니다. Collections.rotate를 사용

0

:

public List<Integer> shift(int [] d) { 
    List<Integer> intList = new ArrayList<Integer>(); 

    for (int index = 0; index < d.length; index++) { 
    intList.add(d[index]); 
    } 

    Collections.rotate(intList, -1); 
    return intList; 
}