所以我需要在10个数组中找到最大值和最小值并交换最大值和最小值。如果您有多种方法可以解决这个问题,那就更好了。
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int [] integers = new int [10];
int max = 0;
int min = 0;
System.out.println("Please enter the 10 integers:");
for ( int counter = 0 ; counter < integers.length ; counter++) {
integers[counter] = scan.nextInt();
} // end for loop
integers[0] = max;
integers[0] = min; // keep getting min as 0
for ( int counter = 0 ; counter < integers.length ; counter++) {
if ( integers[counter] > max ) {
max = integers[counter];
maxIndex = counter;
}
if ( integers[counter] < min) {
min = integers[counter] ;
minIndex = counter;
}
} // end loop
System.out.println(max);
System.out.println(min);
}
答案 0 :(得分:1)
您不需要max
或min
(只是索引)。此外,您应该从索引1
(第二个元素)开始进行比较。最后,在循环之后,您可以交换两个索引处的值。像,
int maxIndex = 0, minIndex = 0;
for (int counter = 1; counter < integers.length; counter++) {
if (integers[counter] > integers[maxIndex]) {
maxIndex = counter;
}
if (integers[counter] < integers[minIndex]) {
minIndex = counter;
}
} // end loop
int t = integers[maxIndex];
integers[maxIndex] = integers[minIndex];
integers[minIndex] = t;
System.out.println(integers[maxIndex]);
System.out.println(integers[minIndex]);
答案 1 :(得分:0)
你可以使用排序算法。我使用冒泡排序。排序后索引0元素将是min,数组的最后一个索引将是max,然后你可以交换它们:
BufferedReader rd=new BufferedReader(new InputStreamReader(System.in));
try{
int n=Integer.parseInt(rd.readLine());
String[] s=rd.readLine().split(" ");
int[] num=new int[n];
for(int i=0;i<n;i++){
num[i]=Integer.parseInt(s[i]);
}
int temp=0;
//bubble sort
for(int i=0;i<n-1;i++){
for(int j=0;j<n-1-i;j++){
if(num[j]>num[j+1]){
temp=num[j];
num[j]=num[j+1];
num[j+1]=temp;
}
}
}
//swapping max and min
temp=num[0];
num[0]=num[n-1];
num[n-1]=temp;
}
catch(Exception e){
e.printStackTrace();
}