需要在 java 中交换数组中的两个元素
Need to swap two elements in an array in java
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];
}
}
}
}
我只是被一件小事所困扰:我不知道如何提取最小值和最大值的位置,如在它们的索引中以便交换它们。我最初尝试了 values[min] 的一些东西,但我想 java 并没有那么多地握住你的手,这是可以理解的
目前您将计算结果存储在 min
和 max
中。从 OOD 来看,这很糟糕,因为数组中的值可以同时更改并给你一个无效状态。
您应该存储 minIndex 和 maxIndex,而不是最小值和最大值。循环可能如下所示:
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;
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];
}
}
}
}
我只是被一件小事所困扰:我不知道如何提取最小值和最大值的位置,如在它们的索引中以便交换它们。我最初尝试了 values[min] 的一些东西,但我想 java 并没有那么多地握住你的手,这是可以理解的
目前您将计算结果存储在 min
和 max
中。从 OOD 来看,这很糟糕,因为数组中的值可以同时更改并给你一个无效状态。
您应该存储 minIndex 和 maxIndex,而不是最小值和最大值。循环可能如下所示:
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;