Ява чтения чисел, интерпретируя как восьмеричное, хочу интерпретировать как строку - PullRequest
0 голосов
/ 03 мая 2010

У меня возникла проблема, когда java читает список массивов из файла чисел или строк YAML и интерпретирует числа как восьмеричные, если у него начальный 0, а не 8-9 цифр.

есть ли способ заставить java читать поле yaml в виде строки?

код:

ArrayList recordrarray = (ArrayList) sect.get("recordnum");
   if (recordrarray != null) {
      recno = join (recordrarray, " ");
   }

также пробовали:

Iterator<String> iter = recordrarray.iterator();
       if (iter.hasNext()) recno = " " +String.valueOf(iter.next());
       System.out.println(" this recnum:" + recno);
       while (iter.hasNext()){
          recno += ""+String.valueOf(iter.next()));

        System.out.println(" done recnum:" + String.valueOf(iter.next()));

       }

вход такой: 061456 изменяется на 25390 061506 изменяется на 25414 061559 -> FINE

Потребовалось некоторое время, чтобы понять, что он делает, и, очевидно, это общая проблема для Java,

идеи? спасибо

редактировать: используя jvyaml

YAML:

  22:
country_code: ' '
description: ''
insection: 1
recordnum:
  - 061264
type: misc

загрузка yaml:

import org.jvyaml.YAML;
Map structure = new HashMap();
structure = (Map) YAML.load(new FileReader(structurefn)); // load the structure file

1 Ответ

0 голосов
/ 03 мая 2010

Где вы читаете файл? Проблема заключается в том, где содержимое файла читается. Наиболее вероятно, список recordarray содержит целые числа, т.е. они уже разобраны. Найдите место, где читаются записи. Может быть, вы делаете что-то вроде этого:

int val = Integer.parseInt(record);

Используйте это вместо:

int val = Integer.parseInt(record, 10);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...