Java 尝试交换数组中的最大值和最小值
我试图在程序中交换数组中的最大值和最小值。 代码如下:Java 尝试交换数组中的最大值和最小值,java,arrays,max,min,Java,Arrays,Max,Min,我试图在程序中交换数组中的最大值和最小值。 代码如下: publicstaticvoidmain(字符串[]args){ 扫描仪输入=新扫描仪(系统输入); int myArray[]=新int[25]; for(int i=0;i
publicstaticvoidmain(字符串[]args){
扫描仪输入=新扫描仪(系统输入);
int myArray[]=新int[25];
for(int i=0;i
公共静态int-maxNumber(int[]arr){
int最大值=arr[0];
//查找数组中的最大值
对于(int a=1;a最大值){
最大值=arr[a];
}
}
返回最大值;
}
公共静态int minNumber(int[]arr){
int最小值=arr[0];
//查找数组中的最小值
对于(int a=1;a
我有两个单独的函数来查找最大值和最小值,但我仍然停留在值的实际交换上。这两个函数的工作原理与我在另一个程序中使用的相同,但我不确定它们是否适用于这个程序
起初,我想通过某种方式使它们相等来找到它们,但结果一无所获
任何帮助都将不胜感激。你非常接近。我复制了一些代码,并注释了需要进行更改的地方。您仍然可以使用现有代码从控制台填充数组
public static void main(String... args) {
Scanner scan = new Scanner(System.in);
int[] arr = new int[25];
System.out.format("Enter array int numbers (%d in total): ", arr.length);
for (int i = 0; i < arr.length; i++)
arr[i] = scan.nextInt();
System.out.println(Arrays.toString(arr));
swamMinMax(arr);
System.out.println(Arrays.toString(arr));
}
private static void swamMinMax(int[] arr) {
int min = Integer.MAX_VALUE;
int max = Integer.MIN_VALUE;
for (int i = 0; i < arr.length; i++) {
min = Math.min(min, arr[i]);
max = Math.max(max, arr[i]);
}
for (int i = 0; i < arr.length; i++) {
if (arr[i] == min)
arr[i] = max;
else if (arr[i] == max)
arr[i] = min;
}
}
另外,将数组中的第一个元素指定为min或max,并从1开始循环,这也是值得称赞的。很多人都不想这么做
int myArray[] = {1,10,-5,99,48,-22,43, 44,100,2};
System.out.println(Arrays.toString(myArray)); // print original array
int maxIdx = maxNumber(myArray); // get index of max
int minIdx = minNumber(myArray); // get index of min
// now swap max and min using the returned indices.
int save = myArray[maxIdx];
myArray[maxIdx] = myArray[minIdx];
myArray[minIdx] = save;
System.out.println(Arrays.toString(myArray)); // print the altered array
public static int maxNumber(int[] arr) {
int maximumValue = arr[0];
// finds the maximum value in an array
int idx = 0; //idx = 0 to start
for (int a = 1; a < arr.length; a++) {
if (arr[a] > maximumValue) {
idx = a; //save index of current max
maximumValue = arr[a];
}
}
return idx; // return index of max
}
public static int minNumber(int[] arr) {
int minimumValue = arr[0];
// finds the minimum value in an array
int idx = 0; // idx = 0 to start
for (int a = 1; a < arr.length; a++) {
if (arr[a] < minimumValue) {
idx = a; // save index of current min
minimumValue = arr[a];
}
}
return idx; // return index of min
}
您可以使用查找最大和最小元素的索引,然后交换它们的值:
int[]arr={1,3,5,6,4,2,8,7,9,1,3};
//最大和最小元素的索引
int max=IntStream.range(0,arr.length)
.boxed().max(比较器比较(i->arr[i])).orElse(-1);
intmin=IntStream.range(0,arr.length)
.boxed().min(比较器比较(i->arr[i])).orElse(-1);
//交换值
int temp=arr[max];
arr[max]=arr[min];
arr[min]=温度;
System.out.println(Arrays.toString(arr));
// [1, 3, 5, 6, 4, 2, 8, 7, -3, -1, 9]
您不应该获取最大值,而应该获取最大值的索引,最小值也是如此。然后您可以在这些索引处切换值。
int myArray[] = {1,10,-5,99,48,-22,43, 44,100,2};
System.out.println(Arrays.toString(myArray)); // print original array
int maxIdx = maxNumber(myArray); // get index of max
int minIdx = minNumber(myArray); // get index of min
// now swap max and min using the returned indices.
int save = myArray[maxIdx];
myArray[maxIdx] = myArray[minIdx];
myArray[minIdx] = save;
System.out.println(Arrays.toString(myArray)); // print the altered array
public static int maxNumber(int[] arr) {
int maximumValue = arr[0];
// finds the maximum value in an array
int idx = 0; //idx = 0 to start
for (int a = 1; a < arr.length; a++) {
if (arr[a] > maximumValue) {
idx = a; //save index of current max
maximumValue = arr[a];
}
}
return idx; // return index of max
}
public static int minNumber(int[] arr) {
int minimumValue = arr[0];
// finds the minimum value in an array
int idx = 0; // idx = 0 to start
for (int a = 1; a < arr.length; a++) {
if (arr[a] < minimumValue) {
idx = a; // save index of current min
minimumValue = arr[a];
}
}
return idx; // return index of min
}
[1, 10, -5, 99, 48, -22, 43, 44, 100, 2]
[1, 10, -5, 99, 48, 100, 43, 44, -22, 2]