将字符值增加 1

2022-09-02 05:30:34

我有一个应用程序,其中包含一个名为“转发”的按钮。我想要的只是当我在中键入“a”并单击按钮时,单词“b”要键入,“c”如果再次按下等等。我试过:EditTextEditTextEditText

value = edt.getText();
edt.setText(value + 1);

但这当然会打印初始字符串,后跟数字“1”。有什么想法吗?多谢


答案 1

经过测试和工作

所有字母都可以由其 ASCII 值表示。

如果将字母转换为 ,则添加 1,然后转换回 a,则字母将增加 1 ASCII 值(下一个字母)。intchar

例如:

'a'
97'b'98

因此,如果输入是,并且您将其转换为 ,您将获得 .然后添加 1 并 get ,然后最后将其再次转换回 a 并得到 。'a'int9798char'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

当然,只有当只有一个字符作为输入时,这才能正常工作。


答案 2

更简单的方法是:

char value = edt.getText().toString().charAt(0);
edt.setText(Character.toString ((char) value+1));

此处,将字符的十进制等效项相加,并将其递增 1。这是一个小图表:value + 1

enter image description hereenter image description here

“z”之后会发生什么?...它不会崩溃..有关完整图表,请参阅此处