java例题_35 找到最大值和最小值并交换位置
1 /*35 【程序 35 最大最小交换】 2 题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。 3 */ 4 5 /*分析 6 * 1、先初始化一个数组,然后从键盘获得值(用for循环赋值) 7 * 2、声明一个max来存储数组第一个元素并在找到数组中最大的值时交换,同理,再声明一个min 8 * 3、输出数组 9 * */ 10 11 package homework; 12 13 import java.util.Scanner; 14 15 public class _35 { 16 17 public static void main(String[] args) { 18 System.out.println("请输入5个整数,并以空格间隔:"); 19 // 从键盘得到一个数组(12 8 66 32 45) 20 int a[]=new int[5]; 21 Scanner sc=new Scanner(System.in); 22 for (int i = 0; i < a.length; i++) { 23 a[i]=sc.nextInt(); //赋值给数组 24 } 25 //输出数组,检验是否赋值正确 26 System.out.print("数组初值为:"); 27 for (int i = 0; i < a.length; i++) { 28 System.out.print(a[i]+" "); 29 } 30 System.out.println(); //换行 31 //声明一个max来存储数组第一个元素并在找到数组中更大的值时交换,同理,再声明一个min; 32 int max=a[0], min=a[a.length-1]; 33 //再声明k记录最大值的位置,q记录最小值的位置 34 int k=0,q=(a.length-1); 35 for (int i = 0; i < a.length; i++) { 36 if(a[i]>max) { 37 max=a[i]; //找到最大的值是多少 38 k=i; //找到最大值的位置 39 } 40 } 41 for (int i = 0; i < a.length; i++) { 42 if(a[i]<min) { 43 min=a[i]; //找到最小的值是多少 44 q=i; //找到最小值的位置 45 } 46 } 47 48 // System.out.println(k+" "+a[k]+" "+q+" "+a[q]); //测试 49 50 //交换最大值到a[0],最小值到a[a.lengh-1]; 51 a[k]=a[0]; a[0]=max; 52 a[q]=a[a.length-1];a[a.length-1]=min; 53 //输出换序后的数组 54 System.out.print("数组换序后为:"); 55 for (int i = 0; i < a.length; i++) { 56 System.out.print(a[i]+" "); 57 } 58 } 59 60 }