从键盘输入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
}
}
我的思路如下:
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;
}
}
}
}
}
}
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]);
}
}