gpt4 book ai didi

java - 想不出移动数组的方法

转载 作者:行者123 更新时间:2023-12-03 23:08:59 26 4
gpt4 key购买 nike

我被卡住了,想不出一种方法来将数组正确移动 __ 个单位。我正在尝试创建一个包含 30 个项目(数字 1-30)的数组,然后可以按用户输入的数字向右移动。这意味着数组中的前几个数字将采用数组末尾的索引,其余数字将向左移动。 (例如,如果 shift = 3,数字 1、2、3 将采用 27、28、29 的索引,其余数字 4-30 将向左移动使得索引 0 = 4,索引 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]+" ");
}

}
}

这是我目前拥有的代码,对我如何做到这一点有什么建议吗?我试图制作一个单独的 for 循环,例如

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

但是这样做的时候,0-shiftNum 的索引会是负数,是行不通的。这是问题的上下文:

创建一个程序,该程序将创建一个包含 30 个项目的数组。然后它将按用户选择的数字旋转数组。

最佳答案

为了移动数组中的数字,以下 for 循环用于移动数组中的值。

// prerequisite: array is already filled with values
for(int i = 0; i < numArray.length; i++) {
arr[i] += shiftNum;

if (numArray[i] > 30) {
numArray[i] -= 30;
} else if (numArray[i] <= 0) {
numArray[i] += 30;
}
}

根据您的代码,创建的数组将包含 1 - 30 的值,包括 1 和 30。如果您希望代码包含 0 - 29 的值,请将 numArray[i] > 30 更改为 numArray[i] > = 30 并将 numArray[i] <= 0 更改为 numArray[i] < 0。

关于java - 想不出移动数组的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58515340/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com