Доброго времени суток. В книге "Java SE 8 Базовый Курс" К. Хорстманна наткнулся на задачку и не могу решить:
"Напишите программу, вводящую 2 числа в пределах 0-65535, сохраняющую их в переменных типа short и вычисляющую их сумму, разность, произведение, частное и остаток без знака, не преобразуя эти величины в тип int."
Пробовал задействовать Short.toUnsignedInt()
, но по условию задания, нужно записывать в переменные типа short. Буду рад помощи.
short
– 16-битное целое число, диапазон значений которого – [-(2^16)/2;(2^16)/2-1]
или [-32768; 32767]
. Длина этого диапазона – 2^16
или 65536
.
Вам необходимо с помощью short
оперировать числами из отрезка [0;65535]
. Для этого, при вводе числа, можно вычитать из него некоторое смещение, которое будет равно 32768
.
Вот пример:
public class Main {
private static final int sOffset = 32768;
public static void main(String[] args) {
short firstValue = stringToShort("2");
short secondValue = stringToShort("65535");
System.out.println("firstValue[short]: " + firstValue);
System.out.println("secondValue[short]: " + secondValue);
System.out.println("firstValue[original]: " + shortToInt(firstValue));
System.out.println("secondValue[original]: " + shortToInt(secondValue));
System.out.println("multiplication: " + shortToInt(firstValue)*shortToInt(secondValue));
}
private static short stringToShort(String value) {
return (short) (Integer.parseInt(value) - sOffset);
}
private static int shortToInt(short value) {
return value + sOffset;
}
}
Вывод на консоль:
firstValue[short]: -32766
secondValue[short]: 32767
firstValue[original]: 2
secondValue[original]: 65535
multiplication: 131070
Возможность хранения результата операций в short
я ставлю под сомнение, так как в общем случае результат может быть вообще числом не целым.
Если объект класса (основного в файле) не имеет интерфейса и используется на прямую как часть состояния другого объекта, можно ли сказать...
Нужно вывести все значения HashMap hmap за ключом GroupНо в метод передается пустой hmap
Как стандартный компонент Button сделать узким, но чтобы текст на них не "резался", а оставался посередине кнопки?