Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 尝试交换数组中的最大值和最小值_Java_Arrays_Max_Min - Fatal编程技术网

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]