我有一个带有EditText
的应用和一个名为&#34的按钮;转发"。我想要的只是当我输入" a"在EditText
中单击按钮,单词" b"输入EditText
," c"如果再次按下等等。我试过了:
value = edt.getText();
edt.setText(value + 1);
但那当然会打印出首字母后跟数字" 1"。有任何想法吗?非常感谢
答案 0 :(得分:23)
经过测试并正常工作
所有字母都可以用ASCII值表示。
如果您将字母转换为int
,添加1,然后转回char
,则字母将增加1个ASCII值(下一个字母)。
例如:
'a'
是97
'b'
为98
因此,如果输入为'a'
并且您将其输入int
,则会得到97
。然后添加1并获取98
,然后再将其再次转回char
并获取'b'
。
以下是投射示例:
System.out.println( (int)('a') ); // 97
System.out.println( (int)('b') ); // 98
System.out.println( (char)(97) ); // a
System.out.println( (char)(98) ); // b
所以,你的最终代码可能就是这样:
// get first char in the input string
char value = et.getText().toString().charAt(0);
int nextValue = (int)value + 1; // find the int value plus 1
char c = (char)nextValue; // convert that to back to a char
et.setText( String.valueOf(c) ); // print the char as a string
当然,只有当一个字符作为输入时,这才能正常工作。
答案 1 :(得分:9)
更简单的方法是:
char value = edt.getText().toString().charAt(0);
edt.setText(Character.toString ((char) value+1));
这里value + 1
添加字符的十进制等值并将其递增一..这是一个小图表:
'z'之后会发生什么? ......它不会崩溃.. see here for the full chart.。
答案 2 :(得分:6)
试试这个
String convertString = getIncrementStr("abc");
public static String getIncrementStr(String str){
StringBuilder sb = new StringBuilder();
for(char c:str.toCharArray()){
sb.append(++c);
}
return sb.toString();
}
答案 3 :(得分:3)
您需要将文本值(字符)转换为ascii值,然后将其增加,而不仅仅是文本。
value = edt.getText().toString();
int ascii = (int)value;
edt.setText(Character.toString ((char) ascii+1));
答案 4 :(得分:3)
String value = edt.getText();
edt.setText(value + 1);
如果以上是您的代码,那么您正在做的是将1连接到value
字符串的末尾。因此,单击一下按钮就会改变显示文本的文字"你的文字"到"你的text1"。此过程将在下一次按钮单击时继续显示"您的text11"。问题实际上是类型错误。
答案 5 :(得分:3)
试试这个:
edt.setText(Character.toString((char)(edt.getText().charAt(0) + 1)));