Мой код Java по какой-либо причине, которую я не могу понять, преобразует строку в шестнадцатеричный, когда мне нужен только конкретный символ, преобразованный в шестнадцатеричный на основе критериев. См. Приведенный ниже код и вывод.Строка Неверно преобразованная в шестнадцатеричный в java
for (int n = 0; n < line.length(); ++n) {
char aChar = line.charAt(n);
if (Character.isLetter(aChar) || Character.isDigit(aChar)
|| aChar == '_' || aChar == '-' || aChar == '.'
|| aChar == '*') {
encoded += +aChar;
} else if (aChar == ' ') {
encoded += +'+';
} else {
String hexValue = Integer.toHexString(aChar);
encoded += '%' + hexValue;
}
}
System.out.println("The encoded string is: " + encoded);
System.out.println("Length in chars is: " + encoded.length());
Выход:
Введите строку текста, чтобы быть URL-закодирован
aaddcc
Строки считывание: aaddcc
Длина в символах составляет: 6
Закодированная ст. кольцо: 97971001009999
Длина в гольцов составляет: 14
Приведенный выше код является мясо его
Это связано с знаком '+', который вызывает неявное преобразование из 'char' в' int', тогда 'int' преобразуется в десятичное число для String concat. – nhahtdh
Если это не упражнение, используйте это: http://docs.oracle.com/javase/7/docs/api/java/net/URLEncoder.html – nhahtdh
Nhahtdh объяснил ваши ошибки. Чтобы их решить, они меняют «закодированные + = + aChar;» на «закодированные + = aChar;» и «закодированы + = +» + »;» на «закодированные + =« + »;». В противном случае '+' будет отбрасывать 'char' в' int', которые возвращают позицию 'char' в таблице Unicode. – Pshemo