Я работаю над системой обмена, и пользователь устанавливает цену и сумму для обмена.Проверьте, достаточно ли Integer
Я хочу убедиться, что обмен не превышает максимальное значение Integer, но я столкнулся с проблемой.
Когда сумма обмена установлена на 9 или более, даже если у меня есть чек, чтобы убедиться, что число не превышает максимального значения, оно не работает. Я сделал некоторые отладки и при определении размера до 9, а цена 2147483646 (1 меньше, чем максимальное число), он печатает это:
2.147.483.630 - 9
Это моя отладка кода, что должен Я добавляю к этому, чтобы убедиться, что этого не происходит?
public void setPrimaryAmount(int primaryAmount) {
int price = primaryAmount * this.price;
System.out.println(Misc.format(this.price * primaryAmount) + " - " + primaryAmount);
if (price > Integer.MAX_VALUE ||
price == Integer.MAX_VALUE ||
price >= Integer.MAX_VALUE ||
price < 0 || price <= 0 ||
price++ == Integer.MAX_VALUE) {
System.out.println("Attempted to set a bad amount.");
return;
}
this.primaryAmount = primaryAmount;
}
«Пытались установить плохое количество» печатает до тех пор, пока введите сумму> = 9.
Вы действительно осознаете, что тесты, такие как «цена <0 || цена <= 0' являются избыточными: 'price <= 0' вполне достаточно. Аналогично для 'price> Integer.MAX_VALUE || price == Integer.MAX_VALUE || price> = Integer.MAX_VALUE', за исключением добавленной морщин, что целая переменная может ** никогда ** быть больше, чем 'Integer.MAX_VALUE', поэтому' price == Integer.MAX_VALUE' - это все, что вам нужно. –