我想将二进制List转换为二进制int []。 我的代码如下:
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
我犯了哪个部分?有人可以帮忙吗? 因为无论我尝试过,当我将它转换为int时,String中的0总是消失。当我们转换为int时,是否可以使String中的0不会消失?如果是,怎么样?
答案 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"
格式说明符表示从一个宽四个字符的int中打印一个字符串,该字符串具有前导0&#39。
编辑:我忘了在格式字符串中添加%n
,因为您也希望打印一个新行。现已添加。