2013-04-03 48 views
0

我正在閱讀類型爲.dat的文件。我不知道該文件的大小,但是我知道的內容將在將正整數長整型值讀入數組

111000111 
0101 
0100 
1 
0011 
110 
0010 
101 
0001 
11 
0000 

目前的形式我有什麼低於

public static void readFile(String fileName) throws FileNotFoundException, IOException 
{ 
    File file = new File(fileName); 

    byte[] bytes = new byte[(int) file.length()]; 
    try (FileInputStream fis = new FileInputStream(file)) 
    { 
     fis.read(bytes); 
    } 


    String[] value = new String(bytes).split("\\s+"); 


    numbers = new int[value.length]; 


    for (int i = 0; i < value.length; i++) 
    { 
     numbers[i] = Integer.parseInt(value[i]); 
    } 





    for (int i = 0; i < numbers.length; i++) 
    { 
     System.out.println(numbers[i]); 
    } 

} // end of import file 

文件的輸出列表下面。正如你所看到的,如果一個數字以0(或多個)開始,它將被刪除。

111000111 
101 
100 
1 
11 
110 
10 
101 
1 
11 
0 

任何幫助表示讚賞。

問候,

邁克

+3

那麼你的問題是什麼? – maba

+0

他想知道如何防止數字中前導零的截斷。 – greenkode

+0

如果你想保持前導零,那麼你不希望'整數'。只需將它們存儲爲'String's。 – Keppil

回答

0

如果你有前導零的問題,比你不應該使用Integer.parseInt

持有一個字符串數組對於這種情況會更好。

numbers = new String[value.length]; 

numbers[i] = value[i]; 

運行後,如果您想使用數組內容爲整數的任一方法,你可能有使用的Integer.parseInt。

+0

那麼,我想我的麻煩是,我需要保持它們的價值。一旦將0001轉換爲int以進行必要的轉換,0001就保持爲0001。所以Integer.parseInt不能正常工作,因爲我需要它。有沒有辦法做填充,以便我能夠保持零? – fisherml

+0

問題解決了,謝謝你們 – fisherml

0

那是因爲你解析你的價值觀爲整數

Integer.parseInt(value[i]) 

用這個代替:

String[] values = new String[value.length]; 


for (int i = 0; i < value.length; i++) 
{ 
    values[i] = value[i]; 
}