输入一个一维数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
import java.util.Scanner;
public class Exchange {
public static void main(String[] args) {
// TODO Auto-generated method stub
int n;
@SuppressWarnings("resource")
Scanner reader=new Scanner(System.in);
n=reader.nextInt();
int Exchange[]=new int[n];
for(int i=0;i<n;i++){
Exchange[i]=reader.nextInt();//输入数组数据
}
int MAX=0,MIN=0;//初始化声明最大值,最小值
for(int i=0;i<n;i++){
if(Exchange[MAX]<Exchange[i]){ //找出最大值,记录下标
MAX=i;
}
if(Exchange[MIN]>Exchange[i]){ //找出最小值,记录下标
MIN=i;
}
}
int t1,t2;
t1=Exchange[MAX]; //交换语句 最大值与第一个数交换
Exchange[MAX]=Exchange[0];
Exchange[0]=t1;
t2=Exchange[MIN]; //交换语句 最小值与最后一个数交换
Exchange[MIN]=Exchange[n-1];
Exchange[n-1]=t2;
for(int i=0;i<n;i++){
System.out.println(Exchange[i]); //最后输出数组元素
}
}
}
通过本次练习,我发现一个问题,MAX和MIN的值用来存储最大最小值的下标,做题的时候是很方便的,但是如果用来直接代表最大值最小值是比较容易出错的,暂时不太理解原因,不过幸好调试出来的平时常用的方法,挺有收获。