2010-05-03 76 views
0

我有一個問題,在Java是由數字或字符串的YAML文件中讀取一個數組列表,它是爲八進制解釋的數字,如果它有一個領先0,沒有8-9位數字。java的閱讀數量,解釋爲八進制,想解釋爲字符串

是有沒有辦法強制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 
+0

你展示不解析字符串爲整數,因此不是您的問題在於代碼的代碼。 – 2010-05-03 12:44:31

+0

除了從yaml加載並映射到「sect」哈希以外,其他任何地方的數據都不會被讀取。你能解釋一下你的意思嗎? – recursive9 2010-05-03 12:59:59

+0

「061456更改爲25390」 - 代碼在哪裏發生? – polygenelubricants 2010-05-03 13:06:40

回答

0

你在哪裏讀的文件?問題在於正在讀取文件內容的位置。大多數人喜歡這個recordarray列表包含整數,即。他們已經解析了。找到正在讀取記錄的地方。也許你正在做的事情是這樣的:

int val = Integer.parseInt(record); 

使用這個代替:

int val = Integer.parseInt(record, 10); 
+0

無法弄清楚如何在評論格式代碼..:/ – recursive9 2010-05-03 13:10:18

+0

這可能是一個大哈希最終的事,但有讀取該文件,並作出這樣的哈希值。您是否使用解析庫來讀取文件?我猜這就是你的問題所在。也許你的一個方法調用有一個不正確的參數。 – Chris 2010-05-03 13:11:57

+0

確定,YAML文件是一個很大的哈希值,所以得到這個特定部分出來的: ' 地圖教派=(圖)sections.get(S); ' 然後,以獲得陣列的是部分的: '的ArrayList recordrarray =(ArrayList的)sect.get( 「recordnum」); ' 這些是它被閱讀的唯一地方。 – recursive9 2010-05-03 13:12:14