Надеюсь, вы тестируете свой код в системе, в которой действительно есть батарея. После запуска этого кода я вижу, что в моей системе 1 батарея и переменная batteryLevel
установлена в процентах, сообщенных Windows.
Исходя из того, что вы описали, и после прочтения вашего кода я предполагаю, что вы либо у вас 0 батарей или более одной батареи, а последняя из коллекции allBatteries
имеет уровень 0%, следовательно, возвращаемое значение. Внимательно посмотрите на свой код - вы перебираете все объекты в allBatteries
, но принимаете в качестве возвращаемого значения только последний.
Что вы можете сделать, это
- установить от
batteryLevel
до -1, чтобы вы знали, был ли запущен l oop над allBatteries
(т. е. allBatteries
имел какие-либо элементы вообще) - возвращает обнуляемый массив уровней заряда батареи - если он Значение null означает, что батарейки не установлены, в противном случае вы можете рассчитать среднее значение, чтобы иметь фактический уровень заряда батареи
- , а еще лучше - вернуть обнуляемый словарь уровня заряда батареи и емкости батареи, чтобы позже вы могли вычислить средневзвешенное значение для всех уровень заряда батареи (ноль для той же индикации, что и выше)