Страницы

Поиск по вопросам

вторник, 26 февраля 2019 г.

Как перевести char в int, без изменения кодировки. Работа с StringBuffer

Задача моего метода- преобразовать каждое число типа StringBuffer в массив int.
При попытке преобразовать каждый символ "9 8 7 6 5 4 3 2 1 " с убранными пробелами я получаю результат: {57,56,55,54,53,52,51,50,49}
Как мне поместить в массив те же числа, что и в строке?
public static void main(String[] args){ StringBuffer strB = new StringBuffer("9 8 7 6 5 4 3 2 1 "); int arrInt=strBToArrInt(strB); for(int i=0;iint[] strBToArrInt(StringBuffer strBuff){ strBuff = new StringBuffer(strBuff.toString().replace(" ", "")); int[] arrInt =new int[strBuff.length()]; for (int i = 0; i < arrInt.length; i++) { arrInt[i]= Integer.valueOf(strBuff.charAt(0));//Я думаю -проблемма в кодировке. strBuff.deleteCharAt(0);//удаляю нулевой символ }
return arrInt; }//end strBToArrInt


Ответ

В твоём случае он возвращает ASCI-код символа. Тебе надо использовать метод digit. Замени
arrInt[i]= Integer.valueOf(strBuff.charAt(0));
На
arrInt[i]= Character.digit(strBuff.charAt(0), 10);
Но этот метод годен только для цифр. Если у тебя числа, то сначала надо разбить исходную строку на массив строк при помощи метода split
String []stringsArray=strBuff.toString().trim().split("\\s+");
А потом пройтись и распарсить каждую строку как число
int[] arrInt =new int[stringsArray.length()]; for (int i = 0; i < stringsArray.length; i++) { arrInt[i]= Integer.parseInt(stringsArray[i]); }

Комментариев нет:

Отправить комментарий