You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何以十进制和二进制格式打印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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:48:33