2016-03-07 126 views
0

我不知道我錯了哪裏,有人可以幫助我。作爲字符串比較整數鑄造字符的問題

給定一個3位數的正整數,如果兩個數字完全相同,則返回true。

MATCH2(414)→真 MATCH2(555)→假 MATCH2(120)→假

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

不要使用「==」比較字符串時,它能夠更好地使用equals()方法的選項。 –

+0

謝謝我已經想通了 –

+1

@GregorioMerazJr。據我所知,OP僅在字符上使用'==',這非常好。 –

回答

1
if (first == second || first == third) 
    return true; 

的條件爲真,所以true立即返回在這一點上不等待稍後if條件返回false。您需要將支票以不同的順序排列。

+0

如果所有3位數字都相同,這也會返回true。 – Kidiskidvogingogin

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