如何以十进制和二进制格式打印ArrayList?编译报错求助
解决ArrayList十进制和二进制打印问题
嘿,我来帮你搞定这个问题!先理清楚你遇到的两个核心问题:输出格式不对,还有编译报错,咱们一个个解决。
先说说编译错误的原因
你看到的错误:
Exception in thread "main" java.lang.Error: Unresolved compilation problem: The method toBinaryString(int) in the type Integer is not applicable for the arguments (List)
这是因为Integer.toBinaryString()方法只接受单个int类型的参数,但你直接把整个ArrayList(List对象)传进去了,它肯定不知道怎么处理整个列表呀!你需要遍历列表里的每一个元素,逐个转换二进制。
然后是输出格式的问题
你当前输出带S:,大概率是你的ArrayList里存的元素,它的toString()方法默认返回了S:X的格式(比如自定义类的toString就是这么写的,或者你误存了带前缀的字符串?不过看你要转二进制,应该是存的数值类型)。咱们需要直接提取数值,不要用默认的toString输出。
解决方案代码示例
情况1:ArrayList存的是Integer类型(最常见的数值存储)
如果你的列表里直接存的是Integer(或int,自动装箱),那直接遍历每个元素打印就行:
import java.util.ArrayList; import java.util.List; public class ExampleGenerics { public static void main(String[] args) { // 初始化你的ArrayList,用泛型指定<Integer>,避免类型混乱 List<Integer> numberList = new ArrayList<>(); numberList.add(2); numberList.add(3); numberList.add(3); numberList.add(3); numberList.add(1); numberList.add(2); // 打印十进制格式 System.out.print("decimal: "); for (Integer num : numberList) { System.out.print(num + " "); } System.out.println(); // 换行 // 打印二进制格式,逐个元素转换 System.out.print("binary : "); for (Integer num : numberList) { // Integer会自动拆箱成int,符合toBinaryString的参数要求 System.out.print(Integer.toBinaryString(num) + " "); } System.out.println(); } }
情况2:ArrayList存的是自定义类(比如带数值属性的对象)
如果你的列表里存的是自定义类(比如类里有个int类型的value属性,toString返回S:X),那要先提取属性值再处理:
import java.util.ArrayList; import java.util.List; // 假设这是你的自定义类 class MyNumber { private int value; public MyNumber(int value) { this.value = value; } // 提供获取数值的方法 public int getValue() { return value; } // 你的toString可能是这样,导致输出带S: @Override public String toString() { return "S:" + value; } } public class ExampleGenerics { public static void main(String[] args) { List<MyNumber> numberList = new ArrayList<>(); numberList.add(new MyNumber(2)); numberList.add(new MyNumber(3)); numberList.add(new MyNumber(3)); numberList.add(new MyNumber(3)); numberList.add(new MyNumber(1)); numberList.add(new MyNumber(2)); System.out.print("decimal: "); for (MyNumber numObj : numberList) { // 不要直接打印numObj(会调用toString出S:X),而是取它的数值属性 System.out.print(numObj.getValue() + " "); } System.out.println(); System.out.print("binary : "); for (MyNumber numObj : numberList) { // 把提取到的int值传给toBinaryString System.out.print(Integer.toBinaryString(numObj.getValue()) + " "); } System.out.println(); } }
关键知识点总结
- 泛型的作用:指定List的类型(比如
List<Integer>或List<MyNumber>),遍历的时候不用强制类型转换,代码更安全、清晰。 - 处理集合要遍历:不管是打印还是转换,都要逐个处理集合里的元素,不能直接把整个集合传给只处理单个元素的方法。
- 自定义类的数值提取:如果存的是自定义对象,要通过getter方法获取内部的数值,而不是依赖toString的输出(toString更多是用来调试的)。
内容的提问来源于stack exchange,提问作者Bob
相关产品推荐
相关产品推荐

