以十进制和二进制格式打印字符串ArrayList

时间:2018-03-21 15:46:26

标签: java string arraylist binary decimal

我有一个ArrayList,我想以十进制和二进制格式打印。

当前输出:十进制:S:2 S:3 S:3 S:3 S:1 S:2

预期:

十进制:2 3 3 3 1 2 二进制:10 11 11 11 1 10

我对如何实现这一目标表示赞赏。

我收到此错误“线程中的异常”主“java.lang.Error:未解决的编译问题:     Integer类型中的toBinaryString(int)方法不适用于generics.ExampleGenerics.main(ExampleGenerics.java:50)中的参数(List)“

我正在学习泛型,我是否需要将int转换为字符串数组才能使其工作?还是我离开了?

public class ExampleGenerics {
    public static void main(String[] args) {
        List < Square > squareList = new ArrayList < > (Arrays.asList(new Square(1),
            new Square(2), new Square(2), new Square(3), new Square(3), new Square(3)));
        System.out.println("original squareList: " + squareList);

        Collections.rotate(squareList, -2);
        System.out.println("rotated list: " + squareList);
        System.out.println(Integer.toBinaryString(squareList)); //error 
    }
}

public class Square {
    private int side;

    public Square(int side) {
        this.side = side;
    }

    public int getSide() {
        return side;
    }

    public void setSide(int side) {
        this.side = side;
    }

    @Override
    public String toString() {
        return "S:" + side;
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + side;
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (!(obj instanceof Square))
            return false;
        Square other = (Square) obj;
        if (side != other.side)
            return false;
        return true;
    }
}

1 个答案:

答案 0 :(得分:0)

问题是您尝试将List传递给方法Integer.toBinaryString()。但是,此方法不采用列表,而是采用整数。这在异常中说明:“Integer类型中的方法toBinaryString(int)不适用于参数(List)”。

您需要遍历它,并为每个List对象传递int,而不是传入Square。所以不要这样做:

System.out.println(Integer.toBinaryString(squareList));

这样做:

for(Square square:squareList){
    System.out.println(Integer.toBinaryString(square.getSide()));
}