1. ホーム
  2. java

[解決済み] 配列を右にずらす - 宿題

2022-03-01 15:49:45

質問

今のところこんな感じなのですが、実行するとJavaのミスマッチエラーが出ます。 これは私の配列です。

char[] letters = {'A', 'B' , 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'};


/********************************************************************************
    shiftRight() will move the contents of the array one slot to the right
********************************************************************************/
public static void shiftRight( char [] letters )
{
    char last = letters[letters.length-1];          // save off first element

    // shift right
    for( int index =letters.length-1; index >= 0 ; index-- )
        letters[index+1] = letters [index];

    // wrap last element into first slot
    letters[0] = last;
    System.out.print("\nshifted Array: " );
}

解決方法は?

というようなことができます。

 public static void shiftRight( char [] letters )
    {

        char last = letters[letters.length-1];          // save off first element

        // shift right
        for( int index =letters.length-2; index >= 0 ; index-- )
            letters[index+1] = letters [index];

        // wrap last element into first slot
        letters[0] = last;
        System.out.print("\nshifted Array: " + Arrays.toString(letters) );

    }

を修正しただけです。 letters.length-1letters.length-2 と入力し、その配列を表示しました。

もう一つの、より簡単な方法として System.arraycopy のようなものです。

last = letters[letters.length-1];
System.arraycopy(letters, 0, letters, 1, letters.length-1 );
letters[0] = last;

配列を表示するには、次のようにすることもできます。

System.out.print("{");
for (int i=0;i<letters.length-1;i++)
    System.out.print("'"+letters[i]+",");
System.out.println("'"+letters[letters.length-1]+"'}");