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



这是一个刽子手游戏,我希望用户只能像"A"一样输入一次,然后第二次输入"A"时,它会出来一个吐司。我的代码有问题吗?

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++;
}
}
}

这里

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

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

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

用户只能在解决方案后输入"A" 如果要通过编程进行设置并且不检查任何条件,则可以使用

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

如果你想要通过xml,你可以在你的EditText限制中使用这两行,并且仅用于字母表。

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

希望对您有所帮助。

不需要做更多的工作,只需将所有字符添加到一个字符串中,用逗号(,(分隔,然后在输入新字符后检查它。 像波纹管。

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

最新更新