用java编写一个能使数组中的数循环移动的小程序。
时间: 2024-05-14 12:13:41 浏览: 49
这个问题是技术问题,可以回答。以下是一个用Java编写的循环移动数组元素的程序示例:
```java
public class ArrayRotation {
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5};
int n = 2; // 向左移动2位
int len = arr.length;
int[] temp = new int[n];
for (int i = 0; i < n; i++) {
temp[i] = arr[i];
}
for (int i = n; i < len; i++) {
arr[i - n] = arr[i];
}
for (int i = 0; i < n; i++) {
arr[len - n + i] = temp[i];
}
System.out.println(Arrays.toString(arr));
}
}
```
以上程序可以将数组中的元素向左循环移动n位(可以根据需要修改n的值)。
相关问题
Java程序中,现有一个int型 维数组int array ]=(1,4,2,3,0,5,7);编写1个程序输出其中的最大值与最小值的和。要求不使用for-each循环也不使用Arrays.stream(array),输出结果为7
在Java中,要找到int型数组`int[] array = {1, 4, 2, 3, 0, 5, 7}`的最大值与最小值之和,可以使用两个指针法,这种方法避免了遍历整个数组。以下是代码实现:
```java
int[] array = {1, 4, 2, 3, 0, 5, 7};
int min = array[0]; // 假设第一个元素是最小值
int max = array[0]; // 同理,假设第一个元素也是最大值
if (array.length > 1) {
// 使用两个指针i和j,初始时i指向第二个元素
int i = 1;
int j = i;
while (j < array.length) {
// 如果当前元素比已知最小值还小,更新min
if (array[j] < min) {
min = array[j];
}
// 如果当前元素比已知最大值还大,更新max
else if (array[j] > max) {
max = array[j];
}
// 移动右指针j
j++;
// 如果左指针i还没移动,说明已经找到了新的最小值,无需继续比较
if (array[i] == min) {
break;
}
// 如果左指针i大于等于右指针j,说明右指针可能超过了最大值,将左指针移到下一个位置并继续比较
else if (i < j) {
i++;
}
}
}
// 最终的结果是max(最大值)和min(最小值)相加
int sum = max + min;
System.out.println("The sum of the maximum and minimum values is: " + sum); // 输出:7
```
阅读全文