课后练习-Java代码实现

从键盘输入10个整数和一个整数n(1≦n≦10),判断这10个数字中第n小的数字并输出。例如输入数组元素为1 3 5 7 9 11 13 14 15 2 8,输入n为2,则输出2。

你可以调用Array.sort()方法将数组排序,然后直接输出第n-1下标的数组元素即可

import java.util.Arrays;     //导入Arrays类
import java.util.Scanner;  //导入输入数据用到的Scanner类

/**
 * @author .29.
 * @create 2022-10-07 19:04
 */
public class Test {
    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);
        int[] arr = new int[10];
        int n;
        for(int i = 0;i < 10;++i){
            System.out.print("请输入第"+(i+1)+"个元素:");
            arr[i] = scan.nextInt();
        }
        System.out.print("请输入n的值:");
        n = scan.nextInt();

        Arrays.sort(arr);   //将数组按由小到大排序
        System.out.println("第n个元素为:" + arr[n-1]);//第n个元素,下标为n-1
    }

}

img

我的思路如下:
1、首先从输入获取10个整数到数组

2、然后从输入获取n的值

3、按从小到大的顺序排序这个数组,以便后面查找数组中第n小的数字

4、循环遍历数组,找到第n小的数字并输出

因为题目提供的例子中,有11个元素输入,而题目只要求输入10个元素到数组,所以只用题目提供的例子的前10个数作为测试例子。代码如下:

import java.util.Scanner;

public class ArrSmallTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        
        Scanner sc = new Scanner(System.in);
        int arr[ ]  = new int[10];
        
        //获取10个整数到数组
        for(int i=0;i<10;i++) {
            System.out.print("请输入第"+(i+1)+"个数:");
            arr[i]  = sc.nextInt();
        }
        
        int n ;
        //获取n
        System.out.print("请输入n:");
        n = sc.nextInt();
        
        //将数组从小到大排序
        for(int i=0;i<10;i++) {        
            for(int j=i;j<10;j++) {
                
                if(arr[i]>arr[j]) {
                    int temp = arr[i];
                    arr[i] = arr[j];
                    arr[j] =temp;
                }
                
            }
        }
        
        int index=1;
        int find=0;
        //如果要输出数组中第1小的数字,输出数组第一个元素即可
        if(n==1) {
            System.out.println("数组第小的数字是"+arr[n-1]);
        }else { //如果是其他情况,则循环遍历数组,找到第n小的数组
            for(int i=0;i<9;i++) {    
                
                if(arr[i]<arr[i+1]) { //如果当前元素比后面一个位置的元素大,则将不同元素数量计数器+1,说明找到第(index+1)小的数字
                    index++;
                    if(index==n) {  //如果找到第n小的数字,则输出它,并退出循环
                        System.out.println(arr[i+1]);
                        break;
                    }
                        
                }
            }
        }
        
        
        
    }

}

img

public static void main(String args[]){
                Scanner nums=new Scanner(System.in);
                int a[]=new int[10];
                System.out.println("请输入10个数字:");
                for (int i = 0; i < 10; i++) {
                    a[i] = nums.nextInt();
                }
                Arrays.sort(a);
                for(int i=0;i<a.length;i++){
                    System.out.println(a[i]);
                }
                System.out.println("请输出第n个小的数字");
                int b=nums.nextInt();
                System.out.println(a[b-1]);
            }
     
            }