思路:其實這道題不是太難,但是這個題太坑了,提交了好多次都不是100,后來才知道,一定一定要在輸入數組數據之前先判斷一下輸進去的n的范圍,一定一定要注意,否則就是跟我下面的圖片一樣的效果了,淚奔~
問題描述
編寫一個程序,讀入一組整數,這組整數是按照從小到大的順序排列的,它們的個數N也是由用戶輸入的,最多不會超過20。然后程序將對這個數組進行統計,把出現次數最多的那個數組元素值打印出來。如果有兩個元素值出現的次數相同,即並列第一,那么只打印比較小的那個值。
輸入格式:第一行是一個整數N,Nn<20;接下來有N行,每一行表示一個整數,並且按照從小到大的順序排列。
輸出格式:輸出只有一行,即出現次數最多的那個元素值。
輸入輸出樣例
樣例輸入
5
100
150
150
200
250
樣例輸出
150
現在說說思路:一維數組a[]存放數據,然后比較相鄰的兩個數字是否相同,若相同用一個臨時變量保存一下次數,將次數+1;然后判斷臨時變量和最大次數的大小,若大於最大次數,將值賦給最大次數,將a[i]值賦給一個int值b。最后輸出int值b
1 import java.util.Scanner; 2 public class _90出現次數最多的整數 { 3 public static void main(String[] args) { 4 Scanner scanner = new Scanner(System.in); 5 int n = scanner.nextInt(); 6 //一定要注意這里,預先進行判斷,一定一定要!!!!!!!!!!! 7 if (n < 1 || n > 20) { 8 return; 9 } 10 int[] a = new int[n]; 11 int temp = 1;//temp記錄出現的次數 12 int max = 1; 13 for (int i = 0; i < n; i++) { 14 a[i] = scanner.nextInt(); 15 } 16 int b = a[0];//b記錄出現次數最多的那個數字 17 for (int i = 1; i < n; i++) { 18 if (a[i-1] == a[i] ) { 19 temp ++; 20 }else{ 21 temp =1; 22 } 23 if (temp >max) { 24 max = temp; 25 b = a[i]; 26 } 27 } 28 System.out.println(b); 29 } 30 }