如何让用户输入一次'A'字母?

时间:2018-06-01 05:15:44

标签: android

这是一个Hangman游戏,我希望用户只能输入一次'A',然后第二次他/她进入'A'就会出现一个Toast。我的代码有问题吗?

     String letter = enterletter.getText().toString();
            char letterChar = letter.charAt(0);
            boolean check = false;
            enterletter.setText("");
            char array[] = new char[120];
            array[letterChar]++;

            if(array[letterChar] > 1){ //Here the codes not working
                Toast.makeText(getApplicationContext(),"You already enter this letter before!", Toast.LENGTH_LONG).show();
            }else {
                for (int i = 0; i < currWord.length(); i++) {
                    if (Character.toUpperCase(currWord.charAt(i)) == Character.toUpperCase(letterChar)) {
                        check = true;
                        charViews[i].setTextColor(Color.BLACK);
                        numCorr++;

                    }

                }
            }

3 个答案:

答案 0 :(得分:1)

用户只能输入“A&#39; A&#39;一旦解决方案是您可以使用,如果您想通过编程设置它而不检查任何条件

EditText editText = new EditText(this);
int maxLength = 1;    
editText.setFilters(new InputFilter[] {new InputFilter.LengthFilter(maxLength)});

如果你想通过xml,你可以在EditText限制中使用这两行,而仅限于Alphabet。

android:maxLength="1"
android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"

希望它有所帮助。

答案 1 :(得分:1)

下面

char array[] = new char[120];
array[letterChar]++;

您正在创建一个初始化为全零的新数组,然后递增该字符的计数。所以它永远是1。

您需要在更全球的位置分配一次数组。类型为char[]也有些误导。这是有效的,因为char只是一个无符号的16位数,而你真正想要的是整数而不是char。

答案 2 :(得分:1)

无需做更多的工作,只需将所有字符添加到一个字符串中,并用逗号(,)分隔,然后在输入新字符后检查它。 像吼叫一样。

String allCharacters="";
    /**
     * Call this method where from entering character like editBox OnTextChange 
     */
    private void addCharacter(String charNew){
        if(allCharacters.trim().length()>0 && allCharacters.contains(","+charNew)){
            Toast.makeText(getApplicationContext(),"You already enter this letter before!", Toast.LENGTH_LONG).show();
        }else {
            allCharacters=allCharacters+","+charNew;
        }
    }