Подтвердить что ты не робот

Увеличьте значение char на единицу

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

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

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

4b9b3361

Ответ 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

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

Ответ 2

Более простой способ:

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

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

enter image description hereenter image description here

Что происходит после "z"?... это не сбой.. см. здесь полный график..

Ответ 3

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

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

Ответ 4

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

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

Ответ 5

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

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

Ответ 6

Попробуйте следующее:

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