我被赋予了一个编写java程序的任务,该程序生成20个随机int数字的数组[-10; 10]。然后我必须切换这个生成的数组的最大负数和最小正元素。
阵列:
public class Array
public static void main(String[] args) {
int arr[];
arr = new int [20];
for (int i=0;i<arr.length;i++)
arr[i] = (int) ( Math.random() * 21)-10;
for (int i: arr)
System.out.print( i + " " );
}
那么,我如何切换生成的元素?我应该如何找到最小正负元素?我应该使用哪些方法?
答案 0 :(得分:0)
解决方案可能更复杂,因为您没有唯一的数字,但根据您的问题,这是一个简单的解决方案(它将第一个最小值更改为第一个最大值)。
遍历您的数组,保持max
和min
+他们的位置(maxPos
和minPos
)。然后使用aux
:
int max = arr[0], min = arr[0];
int maxPos = 0, minPos = 0;
for (int i = 1; i < arr.length; i++) {
if (max > arr[i]) {
max = arr[i];
maxPos = i;
}
if (min < arr[i]) {
min = arr[i];
minPos = i;
}
}
int aux = arr[maxPos];
arr[maxPos] = arr[minPos];
arr[minPos] = aux;
在没有aux
的情况下切换这些数字的另一种方法:
arr[maxPos] += arr[minPos];
arr[minPos] = arr[maxPos] - arr[minPos];
arr[maxPos] -= arr[minPos];
但它更复杂。