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;
}
この例の作品を願っています。