Увеличьте значение символа на единицу

У меня есть приложение с EditText и кнопка с именем «вперед». Все, что я хочу, это просто, когда я набираю «a» в EditText и нажимаю кнопку, для ввода EditText «b» в EditText , «c», если нажать снова и так далее. Я пытался:

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

Но это, конечно, напечатает начальную строку, за которой следует число «1». Есть идеи? большое спасибо

Протестировано и работает

Все буквы могут быть представлены их значениями 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 

Конечно, это будет работать только в том случае, если в качестве входного сигнала будет один символ.

Проще было бы:

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

Здесь value + 1 добавляет десятичный эквивалент символа и увеличивает его на единицу. Вот небольшая диаграмма:

Введите описание изображения здесьВведите описание изображения здесь

Что происходит после «z»? … это не сбой .. см. Здесь полный график. ,

Попробуй это

 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(); } 
 String value = edt.getText(); edt.setText(value + 1); 

Если приведенный выше код является вашим кодом, то то, что вы делаете, является конкатенацией 1 до конца строки value . Таким образом, нажатие кнопки изменит отображаемый текст от «вашего текста» до «вашего текста1». Этот процесс будет продолжаться при следующем нажатии кнопки, чтобы показать «ваш текст11». Проблема – действительно ошибка типа.

Вам нужно преобразовать текстовое значение (символ) в значение ascii, а затем увеличить его, а не только текст.

 value = edt.getText().toString(); int ascii = (int)value; edt.setText(Character.toString ((char) ascii+1)); 

Попробуй это:

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