2010-12-16 24 views
0

我在1月份將我的舊Hangman java遊戲移植到我的編程決賽中的android。我已經獲得了大部分工作,但是我發現我沒有對無效字符進行任何檢查。無效字符基本上都是小寫字母。我一直在考慮手動輸入所有有效的字符到數組中,並檢查每個輸入。有沒有更簡單的方法來做到這一點?確保EditText只返回單個小寫字母

下面是從相應的EditText捕捉輸入代碼:再次

final EditText guessedLetter = (EditText) findViewById(R.id.LetterInput); 
final Button enterGuess = (Button) findViewById(R.id.GuessButton); 
     enterGuess.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      String guess = guessedLetter.getText().toString(); //Save text to a string 
      guessedLetter.setText(""); //Clear EditText after input has been saved to a String 
      editor.putString(GAME_LOGIC_GUESS, guess); 
      editor.commit(); 
      Log.i(GAME_DEBUG, "Guess: " + guess + " parsed to guess()"); 
      guess(); 
      checkWin(); 
      updateDisplay(); 
      } 
      }}); 

謝謝!

回答

0

你想什麼用的TextView的setKeyListener方法首先設置的KeyListener。然後,您將覆蓋您設置的KeyListener的onKeyDown方法並偵聽輸入。如果鍵入的內容不是一個字符(即:A - Z),那麼你會拋出輸入並取消事件。如果輸入的內容是字符,則應在將字符添加到文本框之前將該字符轉換爲小寫字符。

編輯 -

只注意到你不這樣做,就按鍵,而是用戶必須點擊「確定」。這使你的生活更輕鬆。

當用戶按下「確定」時,檢查文本是否爲有效字符(即:只有一個字符,位於A - Z之間)。如果不是,就向用戶大吼一聲。如果是,請檢查它是否爲小寫或將其轉化爲小寫。

http://developer.android.com/reference/android/widget/TextView.html#setKeyListener(android.text.method.KeyListener

http://download.oracle.com/javase/1.4.2/docs/api/java/lang/Character.html#toLowerCase(char

0

我發現,對於該特定問題的最簡單的解決方案將是僅填充有有效的字符陣列。因此,我沒有將非有效的字符和符號列入黑名單,而只是將相對較少的有效字符列入白名單。

這裏是數組,如果有人需要它的未來:

final String[] allowedChars = {"a", "b", "c", "d", "e", 
       "f", "g", "h", "i", "j", 
       "k", "l", "m", "n", "o", 
       "p", "q", "r", "s", "t", 
       "u", "v", "w", "x", "y", 
       "z"}; 

使用循環比較:

for(int n = 0; n < allowedChars.length; n++){ 
     if(allowedChars[n].equalsIgnoreCase(guess)){ 
     //Game logic here 
     }}