第二大整数
问题描述
编写一个程序,读入一组整数(不超过20个),当用户输入0时,表示输入结束。然后程序将从这组整数中,把第二大的那个整数找出来,并把它打印出来。说明:(1)0表示输入结束,它本身并不计入这组整数中。(2)在这组整数中,既有正数,也可能有负数。(3)这组整数的个数不少于2个。
输入格式:输入只有一行,包括若干个整数,中间用空格隔开,最后一个整数为0。
输出格式:输出第二大的那个整数。
输入输出样例
样例输入
5 8 -12 7 0
样例输出
7
/***************************************************************************************************
import java.util.*;
public class Main
{
pubilc void show(int arr[],int i)
{
int j,count=0;
//首先我们要建立一个新的数组来保存非零的数
//其次我们要建立一个count来定位我们输入数在数组的位置(类似指针的作用)
int arrs[]=new int[i];
for(j=0;j<arr.length;j++)
{
if(arr[j]!=0)
{
arrs[count]=arr[j];
count++;
}
}
System.out.println(arrs[arrs.length-2]);
}
public static void main(String args[])
{
//为遍历数组做准备i
int i,n,arr[]=new int[20];
Scannner sc=new Scanner(System.in);
//定义一个变量来保存数组的每一个输入的数n,并且为我们输入0的时候来终结数组的遍历
for(i=0;i<arr.length;i++)
{
arr[i]=sc.nextInt();
n=arr[i];
if(n!=0) arr[i]=sc.nextInt();
}else break;
//通过java的Arrays.sort();来进行快排
Arrays.sort(arr);
//排顺序了,现在思考一下,如果是征服数混合或者正数的话,这样我们直接输出arr[arr.length-2];这个就可以了
//但是如果全都是负数的话,由于我们初始化了分配空间大小的时候,其他没有赋值的地方都是0,这样我们就要处理;
//这样我们来写一个show()来展示一下我们的处理
show(arr,i);
}
}
**********************************************************************************************************************/
//上面是个人写的,下面通过集合的方式,我们可以通过集合的list.add()来和get()来获取,这样就减少了上面代码数组的开辟空间,产生了多余的空间,并占有0,对我们结果有排序结果有影响的问题
import java.util.*;
public class Main
{
//定义一个集合数组,用泛型
Scanner sc=new Scanner(System.in);
List<Integer> list=new ArraryList<>();
int a=0;
while((a=sc.nextInt())!=0);
{
list.add(a);
}
Collections.sort(list);
System.out.println(llist.get(list.size()-2));
}