配列をシフトする方法を考えることができません

BipoN:

私はこだわっていますし、適切__単位で配列をシフトする方法を考えることはできません。私はその後、数ユーザ入力だけ右にシフトすることができる30の項目(番号1-30)の配列を作成しようとしています。これは、配列の最初のいくつかの数字は、インデックスの配列の末尾を取るだろう、と数字の残りの部分は左にシフトされることを意味します。シフト= 3の場合(例は、数字1,2,3 27,28,29のインデックス、および4-30左作るインデックス= 4 0、インデックス1 = 5、インデックスシフトする数値の残りの部分を取る2 = 6 ....

import java.util.*;

class Main {
  public static void main(String[] args) {
    Scanner input = new Scanner (System.in);

    System.out.println("\nEnter the shift/rotation:");
    int shiftNum = input.nextInt();

    int [] numArray = new int [30];

    for(int i = 0; i < 30; i++){
        numArray [i] = i+1;
        System.out.print(numArray[i]+" ");
    }

  }
}

これは私がこれまで持っているコードで、私はこれを行うことができますどのように任意の提案ですか?私のようなループのために別のを作るしようとしています

numArray [i-shiftNum] = numArray[i];

しかし、これをやると、0-shiftNumの指数はマイナスになると動作しないでしょう。これは、問題の文脈であります:

30の項目の配列を作成するプログラムを作成します。それは、ユーザによって選択された数でアレイを回転します。

ビマル:

ここではあなたのための迅速な修正があります。次のコードを確認してください。

入力:

4:シフト/回転を入力します。

出力:

回して指定された配列[1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16、17、18、19、20、21、22、23、 24、25、26、27、28、29、30]

回転後に[27、28、29、30、1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16、17、18、19、20 、21、22、23、24、25、26]

    public static void main(String[] args) {
    RotationDemo rd = new RotationDemo();
    int[] input = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30};
    int k = 0;
    Scanner scan = new Scanner (System.in);
    try{
         System.out.println("\nEnter the shift/rotation:");
         int shiftNum = scan.nextInt();
         if(shiftNum < 30) {
             k = shiftNum;
             System.out.println("Rotate given array " + Arrays.toString(input));
             int[] rotatedArray = rd.rotateRight(input, input.length, k);
             System.out.println("After Rotate  " + 
                  Arrays.toString(rotatedArray));
         } else {
            System.out.println("Shift number should be less than 30");
         }
         } catch(Exception ex){
         } finally {
            scan.close();
        }
      }
      public int[] rotateRight(int[] input, int length, int numOfRotations) {
        for (int i = 0; i < numOfRotations; i++) {
          int temp = input[length - 1];
          for (int j = length - 1; j > 0; j--) {
            input[j] = input[j - 1];
          }
          input[0] = temp;
        }
        return input;
      }

この例の作品を願っています。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=330267&siteId=1