比较作为String的整数字符的问题

时间:2016-03-07 19:21:17

标签: java if-statement boolean

我不确定我哪里错了,有人可以帮帮我。

给定一个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;
}

2 个答案:

答案 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();
}