import java.util.Scanner;
public class Swap {
public static void main(String[]args){
Scanner kb = new Scanner(System.in);
System.out.print("How many integers? ");
int size = kb.nextInt();
int[] values = new int[size];
System.out.println("Enter integers:");
for (int i = 0;i < size; i++){
values[i] = kb.nextInt();
}
int min = values[0];
for(int i = 0;i < values.length;i++){
if(values[i] < min){
min = values[i];
}
}
int max = values[0];
for(int i = 0;i < values.length;i++){
if(values[i] > max){
max = values[i];
}
}
}
}
我只是抓住了一件小事:我不知道如何提取最小值和最大值的位置,就像它们的索引一样,以便交换它们。我最初尝试了一些符合价值观的东西[min],但我想java并没有抓住你那么多可以理解的东西
答案 0 :(得分:0)
目前,您存储在min
和max
计算结果中。从OOD开始这很糟糕,因为数组中的值可能同时发生变化并导致状态无效。
应该存储minIndex和maxIndex,而不是min和max。循环可能如下所示:
int maxIndex = 0;
for(int i = 0;i < values.length;i++){
if(values[i] > values[maxIndex]){
maxIndex = i;
}
}
现在交换它们很容易:
int tmp = values[maxIndex];
values[maxIndex]=values[minIndex];
values[minIndex]=tmp;