Почему преобразование int в суффикс объекта-обертки символов перед каждым символом? - PullRequest
0 голосов
/ 18 октября 2018

Ниже приведено решение для нахождения одного отличающегося дополнительного алфавита между двумя строками.

 public char findTheDifference(String s, String t) {
        int sSum = 0;
        int tSum = 0;
        for(int i = 0; i < s.length(); i++){
            sSum = sSum + Character.getNumericValue(s.charAt(i)); 
        }
        for(int j = 0 ; j < t.length(); j++){
            tSum = tSum + Character.getNumericValue(t.charAt(j));
        }
        return (char)(tSum-sSum);    
    }

Возвращает '\ u000e' вместо 'e'.

Пример ввода:

String1 = "abcd"
String2 = "abecd"

Вывод = "e"

Вопросы: 1) Почему возвращается «\ u000e»?Я понимаю, что если я удаляю Character.getNumericValue в обоих for loops, я получаю 'e'.Но я хочу понять, почему его использование добавляет \ u000?

1 Ответ

0 голосов
/ 18 октября 2018

Проблема в том, что Character.getNumericValue() преобразует символ в число, используя определенные правила , описанные здесь .

В частности, буквы a, b, c, d, e, который вы используете, преобразуются в числа 10, 11, 12, 13, 14 - этот метод предполагает, что вы предполагали, что они должны быть цифрами в системе счисления, такой как шестнадцатеричное.

...