上期把數字的範圍定出來了,這次要來判斷數字是否有重複。
首先先去BingoButton設置儲存按鈕內數字
public void saveNumber(int iNumber){
m_NumberSave = iNumber;
}
public int getNumber(){
return m_NumberSave;
}
在判斷是否重複的時候,會用一個for迴圈,讓被點擊按鈕得到的這個數字去跟所有button的數字去比較,如果重複,就印一個dialog去告訴使用者輸入的數字重複了。
沒有重複的話就把數字存進這個按鈕裡,以及把數字印到按鈕上面。
再來就來設定按鈕吧,這邊設定只要有數字重複就直接跳出迴圈,畢竟已經確定有數字重複就沒有在判斷下去的必要了。
沒有重複的話,可以透過m_iNowIndex知道現在要設定的是哪個按鈕
最後在印數進按鈕的時候裏面用了正則(replaceAll("^(0+)", "")) ,透過這種方式就可以讓01、02、03…等數字變成1、2、3…這樣按鈕裡就不會出現01跟1同時存在的尷尬場景了
private void checkInputNumberRepeat() {
boolean bCheck = true;
for (int i = 0; i < m_iSize * m_iSize; i++) {
//判斷是否重複
if (Integer.parseInt(m_binding.etInput.getText().toString()) == m_alBingoButtons.get(i).getNumber()) {
showDialogRepeatNumber();
bCheck = false;
break;
}
}
if (bCheck == true) {
BingoButton bingoButton = m_alBingoButtons.get(m_iNowIndex);
String strEtText = m_binding.etInput.getText().toString();
bingoButton.getButton().setText(strEtText.replaceAll("^(0+)", ""));
bingoButton.saveNumber(Integer.parseInt(strEtText.replaceAll("^(0+)", "")));
}
}
做完記得要放回checkInputNumber
private void checkInputNumber() {
String strBingoNumber = m_binding.etInput.getText().toString();
if (m_binding.etInput.getText().toString().equals("")) {
} else if(Integer.parseInt(strBingoNumber)>m_iSize*10||Integer.parseInt(strBingoNumber)<1){
showDialogOverRange();
}else{
checkInputNumberRepeat();
}
}
這樣就完成數字是否重複的判斷啦~等後面亂數按鈕用好之後也可以再測試看看數字會不會重複。