Android 如何允许用户输入';A';一次字母表?
这是一个刽子手游戏,我希望用户只能像'a'一样输入一次,然后第二次输入'a'时,就会出现一个祝酒词。我的代码有问题吗Android 如何允许用户输入';A';一次字母表?,android,Android,这是一个刽子手游戏,我希望用户只能像'a'一样输入一次,然后第二次输入'a'时,就会出现一个祝酒词。我的代码有问题吗 String letter = enterletter.getText().toString(); char letterChar = letter.charAt(0); boolean check = false; enterletter.setText(""); char
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++;
}
}
}
String letter=enterletter.getText().toString();
char-letterChar=letter.charAt(0);
布尔检查=假;
enterletter.setText(“”);
字符数组[]=新字符[120];
数组[letterChar]++;
如果(数组[letterChar]>1){//这里的代码不起作用
Toast.makeText(getApplicationContext(),“您之前已经输入了此字母!”,Toast.LENGTH\u LONG.show();
}否则{
for(int i=0;i
用户只能像“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"
希望有帮助。用户只能像“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"
希望有帮助。这里
char array[] = new char[120];
array[letterChar]++;
您正在创建一个初始化为全零的新数组,然后增加字符的计数。所以它总是1
您只需在更全局的位置分配一次阵列。类型为char[]
也有点误导。这是因为char
只是一个无符号的16位数字,您真正想要的是一个整数计数,而不是char。这里
char array[] = new char[120];
array[letterChar]++;
您正在创建一个初始化为全零的新数组,然后增加字符的计数。所以它总是1
您只需在更全局的位置分配一次阵列。类型为
char[]
也有点误导。这是因为char
只是一个无符号的16位数字,而您真正想要的是一个整数计数而不是char。无需做更多的工作,只需将所有字符添加到一个字符串中,逗号(,)分隔,然后在输入新字符后检查它。
像贝娄
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;
}
}
不需要做更多的工作,只需在一个字符串中添加所有字符,并用逗号(,)分隔,然后在输入新字符后检查它。 像贝娄
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;
}
}