2017-09-03 21 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'を返すと言っても何も返さないので、「返り値が見つからないというエラーが出ます。 – 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 
    } 

javaは 目的ではない値の参照を渡すので、あなたは、任意のデータを返す必要はありません。 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; 
} 
関連する問題