2015-10-17 19 views
1

我想將二進制列表轉換爲二進制int []。 我的代碼低於:將二進制列表<String[]>轉換爲二進制字節[] java與精確結果

public class BinListToIntArr { 
    public static void main(String[] args) { 
     List<String[]> arrList = new ArrayList<>(); 

     //fill it 
     arrList.add(new String[] {"0011","1100","1111","1111","0000"}); 
     arrList.add(new String[] {"0101","1111","1010","0000","0101"}); 
     arrList.add(new String[] {"1111","1010","0000","0101","1111"}); 
     arrList.add(new String[] {"1010","0000","1111","0101","1100"}); 
     arrList.add(new String[] {"0000","1110","1100","0001","0011"}); 

     //convert it 
     ArrayList<Integer> ints = new ArrayList<>(); 
     for (String[] array : arrList) { 
      for (String str : array) { 
       ints.add(Integer.parseInt(str)); 
      } 
     } 

     Integer[] result = ints.toArray(new Integer[] {}); 

     for (int i : result){ 
      System.out.println(i); 
     } 
    } 
} 

結果應該是:

0011 
1100 
1111 
1111 
0000 
1010 
1111 
1010 
0000 
1010 
1111 
1010 
0000 
1010 
1111 
1010 
0000 
1111 
1010 
1100 
0000 
1110 
1100 
1000 
1100 

但我得到了這樣的結果:

11 
1100 
1111 
1111 
0 
101 
1111 
1010 
0 
101 
1111 
1010 
0 
101 
1111 
1010 
0 
1111 
101 
1100 
0 
1110 
1100 
1 
11 

在這部分,我犯了一個錯誤?有沒有人可以幫忙? 因爲無論我嘗試過,String中的0總是消失,當我將它轉換爲int。當我們轉換爲int時,是否有可能讓String中的0不會消失?如果是,如何?

回答

1

不要混淆int和int的String表示形式,因爲int只是一個數字,並且永遠無法理解或存儲類似前導0的內容。如果你想顯示前導0,然後格式化你的輸出。的String.format(...)或System.out.printf(...)會的工作,例如:

for (int i : result) { 
    System.out.printf("%04d%n", i); 
    } 

,輸出:

0011 
1100 
1111 
1111 
0000 
0101 
1111 
1010 
0000 
0101 
1111 
1010 
0000 
0101 
1111 
1010 
0000 
1111 
0101 
1100 
0000 
1110 
1100 
0001 
0011 

"%04d"格式說明稱打印的String從一個寬度爲四個字符並且具有前導0的整數。

編輯:我忘了在格式字符串中添加%n,因爲您也希望打印新行。現在已經添加了。

+0

它正在打印!所以,價值本身不會改變,對吧?我的意思是,列表中的結果與int []結果相同,我正確嗎? – user3698011

+0

@ user3698011:值完全不同。一個持有字符串,一個持有整數,兩個完全不同的類型持有不同的信息。 –

+0

謝謝你的解釋! – user3698011

相關問題