我有一个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;
}
}
答案 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()));
}