Я делаю простое упражнение из книги, и меня немного смущает, как работает java-функция parseInt. Я прочитал строку из входного файла, использовал StringTokenizer, чтобы разделить ее, и теперь я хочу проанализировать каждую часть как целое число.
Я проверил в окне просмотра, что входные данные функции parseInt действительно являются строкой, которая кажется действительным целым числом (например, «35»). Однако, когда я пытаюсь использовать функцию str.charAt
в моей переменной str
, содержащей значение «35», я получаю странные результаты:
str.charAt(0) == ""
str.charAt(1) == "3"
str.charAt(2) == ""
str.charAt(3) == "5"
Кажется, это проблема, возможно, как-то связанная с кодировкой, поэтому я попытался ее исправить, используя такой способ чтения файла:
InputStreamReader reader = new InputStreamReader(new FileInputStream(inputfile), "UTF-8");
(Я явно сохранил файл, используя кодировку UTF-8 в моем редакторе), но это не помогло. Есть идеи, в чем может быть проблема и как ее исправить?
РЕДАКТИРОВАТЬ: мой образец
InputStreamReader reader = new InputStreamReader(new FileInputStream(inputfile), "UTF-8");
BufferedReader bfreader = new BufferedReader(reader);
line = bfreader.readLine();
while (line !=null)
{
String[] valueStrings = line.split(" ");
String hole = valueStrings[0];
int[] values = new int[4];
for (int i = 0; i <values.length; i++){
String nr = valueStrings[i+1].trim();
values [i] = Integer.parseInt(nr);
}
// it breaks at the parseInt here, the rest is not even executed...
}