第二大整数
問題描述
編寫一個程序,讀入一組整數(不超過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));
}
轉載于:https://www.cnblogs.com/heji/p/4959878.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
- 上一篇: 高考倒计时
- 下一篇: wpf prism4 出现问题:无法加载