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 }

 

posted @ 2020-02-16 21:44  浪漫主义程序员  阅读(1373)  评论(0编辑  收藏  举报