import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
public class Main{
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while(in.hasNext()){
int n = in.nextInt();
if(n == 0)
break;
String key = null;
Map<String,Integer> map = new HashMap<String,Integer>();
while(n-- > 0){
key = in.next();
if(map.containsKey(key) == false){
map.put(key, new Integer(1));
}else{
map.put(key, new Integer(map.get(key).intValue()+1));
}
}
int max = 0;
String maxStr = null;
for (String tmp : map.keySet()) {
if(map.get(tmp).intValue() > max){
max = map.get(tmp).intValue();
maxStr = tmp;
}
}
System.out.println(maxStr);
}
}
}
通过这道题练习了一下Map的使用。
之前出现的错误:
将:
int n = in.nextInt();
if(n == 0) break;
写成
if(in.nextInt() == 0)break;
int n = in.nextInt();
报错。
问题应该是出在
in.nextInt() == 0的含义应该包含两层:一是当前接受的int类型的数不等于0;二是要接收下一个数;所以 此时需要2个int型的数才不会报错,显然与题意不符。