【问题标题】:Print String ArrayList in decimal and binary format以十进制和二进制格式打印字符串 ArrayList
【发布时间】:2018-08-30 20:03:21
【问题描述】:

我有一个要以十进制和二进制格式打印的 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;
    }
}

【问题讨论】:

    标签: java string arraylist binary decimal


    【解决方案1】:

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

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

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

    这样做:

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

    【讨论】:

    • 谢谢!我在想我需要一个for每个循环。最后一个问题,查看 Java Integer API 有一个 toBinaryString、toHexString 方法等。但是,我看不到转换为十进制的方法。你有什么建议,你能指出我正确的方向吗?
    • 小数是什么意思?你指的是分数吗?例如1.23?如果这就是你想要的,你不想使用int,你想要double。阅读primitive data types in Java 可能会很有用。您可能还想阅读this Stackoverflow post。此外,this post 详细说明了如何将 int 转换为 double
    • 再次感谢您,我通过这些链接找到了我想要的东西 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-09
    • 2012-09-25
    • 2020-05-14
    • 2011-07-11
    • 1970-01-01
    • 2011-05-04
    • 2017-03-22
    相关资源
    最近更新 更多