我已经提取了数组中最大和最小的元素。我试图弄清楚如何将最大的元素交换为数组中的最后一个元素,并将最小的元素交换为数组中的第一个数字,但这对我不起作用。我在做什么错?
import java.util.Scanner;
public class SmallestLargest
{
public static void main (String []args)
{
Scanner input = new Scanner (System.in);
int[] array1 = new int [input.nextInt()];
for (int i = 0; i < array1.length; i++)
{
array1[i] = input.nextInt();
}
int max = array1[0];
int least = array1[0];
for (int i = 0; i < array1.length; i++)
{
if(max < array1[i])
{
max = array1[i];
}
else if(least > array1[i])
{
least = array1[i];
}
}
for (int i = 0; i < array1.length; i++)
{
int x = array1[0];
array1[0] = max;
array1[array1.length-1] = x;
System.out.print(array1[i] + " ");
}
input.close();
}
}
删除第二个for循环,然后执行
array1[0] = max;
array1[array1.length-1] = least;
这就是您所需要的,您必须跟踪最大/最小值所在的索引。
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int[] array1 = new int[input.nextInt()];
int maxIndex = -1;
int minIndex = -1;
for (int i = 0; i < array1.length; i++) {
array1[i] = input.nextInt();
}
int max = array1[0];
int least = array1[0];
for (int i = 0; i < array1.length; i++) {
if (max < array1[i]) {
max = array1[i];
maxIndex = i;
} else if (least > array1[i]) {
least = array1[i];
minIndex = i;
}
}
int temp = array1[0];
array1[0] = max;
array1[maxIndex] = temp;
temp = array1[array1.length - 1];
array1[array1.length - 1] = least;
array1[minIndex] = temp;
for(int a: array1){
System.out.println(a);
}
input.close();
}
}