我不确定我哪里错了,有人可以帮帮我。
给定一个3位正整数,如果正好2位数相同则返回true。
match2(414)→true match2(555)→false match2(120)→false
boolean match2(int num) {
String numBer = num +"";
char first, second, third;
first = numBer.charAt(0);
second = numBer.charAt(1);
third = numBer.charAt(2);
if (first == second && second != third) {
return true;
}
else if (second == third && first != second) {
return true;
}
else if (first == third && second != third){
return true;
}
return false;
}
答案 0 :(得分:1)
if (first == second || first == third)
return true;
条件为真,因此此时true
立即返回,而无需等待稍后某个if
条件返回false
。您需要将支票换成不同的顺序。
答案 1 :(得分:0)
如果Java 8是一个选项,您可以考虑以下解决方案
public static boolean checkIntChars(int number){
String str = String.valueOf(number);
Map<String, Long> frequentChars = Arrays.stream(str.split("")).collect(Collectors.groupingBy(c -> c, Collectors.counting()));
return frequentChars.entrySet().stream().filter(e -> e.getValue()==2).findAny().isPresent();
}