Вы должны переопределить метод toString()
в вашем классе Box
:
class Box {
private final int height;
public Box(int h){
height = h;
}
@Override
public String toString(){
return Integer.toString(height);
}
}
Поскольку реализация по умолчанию наследуется классом Object
(базовый класс для каждого объекта в Java) , который выглядит следующим образом:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
Обратите внимание, что это не печать адреса памяти, а шестнадцатеричное представление хеш-кода, возвращаемого
blockquote>hashcode()
-методом
Здесь, мы можем также использовать разрезание:
len(bin(1)[2:])
len(bin(5)[2:])
len(bin(10)[2:])
len(bin(100)[2:])
len(bin(1000)[2:])
, который распечатал бы:
1
3
4
7
10
В python 2.7+ есть метод int.bit_length ()
:
>>> a = 100
>>> a.bit_length()
7
>>> len(bin(1000))-2
10
>>> len(bin(100))-2
7
>>> len(bin(10))-2
4
Примечание : не работает для отрицательных чисел, возможно, потребуется вычесть 3 вместо 2
{{1} }def bitcounter(n):
return math.floor(math.log(n,2)) + 1
РЕДАКТИРОВАТЬ исправлено, теперь он работает с 1