У меня есть следующий скрипт:
public void addcheese(int addcheese) {
if (cheeseamount + addcheese < mincapacity) {
System.out.println("Sorry no more cheese can be removed.");
} else if (cheeseamount + addcheese <= maxcapacity) {
if ((cheeseamount + addcheese > 1900) && (cheeseamount + addcheese < 2000)) {
System.out.println("Warning : The box is nearing it maximum capacity.");
}
cheeseamount = cheeseamount + addcheese;
}
else {
System.out.println("This storage box has reached its maximum capacity. You cannot fill it any more");
}
}
(Примечание: в макспроизводстве конструктора = 2000)
Скрипт работает так, как должен, однако есть проблема в том, что если бы я должен был ввести число, подобное 3400, оно все равно напечатало бы сообщение "Это хранилище достигло максимума...", не добавляя ничего. Как бы отредактировать сценарий, в этом случае добавьте в поле вверх до максимальной емкости и отбросьте лишнюю сумму. Спасибо.
Вот решение:
public void addcheese(int addcheese)
{
final int target = cheeseamount + addcheese;
if (target < mincapacity) {
System.out.println("Sorry, no cheese can be removed");
return;
}
if (target >= maxcapacity) {
cheeseamount = maxcapacity;
System.out.println("Box is full");
return;
}
cheeseamount = target;
if (cheeseamount > 1900)
System.out.println("Warning, box is nearing its maximum capacity");
}
Заметки:
addCheese
, cheeseAmount
и т.д.Один из способов добиться этого - это изменить ваше выражение else. В заявлении else вы можете просто установить количество сыра до максимального количества, добавляя как можно больше сыра и отбрасывая остальное:
else {
cheeseamount = 2000;
System.out.println("This storage box has now reached its maximum capacity.");
}
Однако здесь вы теряете количество сыра, которое вы отбрасываете. Если вы хотите сохранить этот номер, вы можете просто создать новую переменную:
else {
int extraCheese = cheeseamount + addcheese - 2000;
cheeseamount = 2000;
System.out.println("This storage box has now reached its maximum capacity.");
}
Замечание: было бы неплохо сохранить максимальную емкость и любые другие магические числа в качестве констант. Магические числа - это в основном случайные числа, которые появляются во всем вашем коде, что любой, кто смотрит на ваш код, не имеет смысла. Создавая константу с описательным именем, вы можете дать понять другим программистам, что представляет собой число, и вы также можете легко изменить его в будущем.
Добавьте другое, если еще с этим условием:
else if (cheeseamount != maxcapacity && cheeseamount + addcheese > maxcapacity) {
cheeseamount = maxcapacity;
System.out.println("Warning : The box just reached it maximum capacity.");
}
cheeseamount
от избытка, что будет сcheeseamount
? Это очень простой ответ, если я правильно понимаю проблему. Вы должны просто иметь возможность использовать простое назначение внутри последнего блокаelse
.