-1
мне нужна помощь со следующим вопросом: http://practiceit.cs.washington.edu/problem.jsp?category=Building+Java+Programs%2C+3rd+edition%2FBJP3+Chapter+11&problem=bjp3-11-e19-rarestJava Collections Помощь (Practice-It!)
Вот мой код для этого:
public static int rarest(Map<String, Integer> m) {
if (m.isEmpty()) {
throw new NullPointerException();
}
int min = Integer.MAX_VALUE;
int store = Integer.MAX_VALUE;
Map<Integer, Integer> m1 = new TreeMap<Integer, Integer>();
List<Integer> l = new ArrayList<Integer>();
for (Integer a: m.values()) {
l.add(a);
}
for(int i=0; i<l.size(); i++) {
int temp = 1;
for(int j=i+1; j<l.size(); j++) {
if (l.get(i) == l.get(j)) {
temp++;
}
}
if (!m1.containsKey(l.get(i))) {
m1.put(l.get(i), temp);
}
}
for(Integer a: m1.keySet()) {
int val = m1.get(a);
if (val == min) {
if (a<store) {
store = a;
}
} else if (val < min) {
min = val;
store = a;
}
}
return store;
}
Когда код работает на этом:
{A=1000, B=1, C=101, D=3, J=1000, K=101, L=3, LN=1, M=1000, N=101, R=3, S=1000, T=101, V=3, W=1, X=1, Y=1, Z=1},
я получаю возвращение 1000
, когда возвращение должно быть 3
. Почему это так?
никогда не бросайте исключение NullPointerException ... –
Просто отлаживайте свой код. – erencan
Я бы предложил вам отладить ваш код и добавить контрольные точки в свой код, чтобы проверить значения в ваших переменных. Специально последний цикл. –