В настоящее время я пытаюсь создать приложение, в котором я пытаюсь воссоздать магазин соков, где люди могут что-то заказать. Количество оставшихся соков равно 3, и с каждым купленным соком количество уменьшается на единицу, и почему-то точное уменьшение не работает.
Надеюсь, вы сможете мне помочь...
Я создал два класса:
public class Program {
public static void main(String[] args) {
JuiceStore Juice1 = new JuiceStore(14);
JuiceStore Juice2 = new JuiceStore(7);
JuiceStore Juice3 = new JuiceStore(17);
try {
Juice1.buyJuice();
}
catch(NoJuiceException e) {
System.out.println();
System.out.println(e.getMessage());
}
catch(TooColdException e) {
System.out.println(e.getMessage());
}
catch(TooWarmException e) {
System.out.println("The juice is too warm.");
}
try {
Juice2.buyJuice();
}
catch(NoJuiceException e) {
System.out.println();
System.out.println(e.getMessage());
}
catch(TooColdException e) {
System.out.println(e.getMessage());
}
catch(TooWarmException e) {
System.out.println(e.getMessage());
}
try {
Juice3.buyJuice();
}
catch(NoJuiceException e) {
System.out.println();
System.out.println(e.getMessage());
}
catch(TooColdException e) {
System.out.println(e.getMessage());
}
catch(TooWarmException e) {
//e.getMessage();
System.out.println(e.getMessage());
}
}
}
2.JuiceStore, в котором я указал способ покупки:
public class JuiceStore {
private int temperature;
private int leftJuices = 3;
JuiceStore(int temperature) {
this.temperature = temperature;
}
public void buyJuice() throws NoJuiceException, TooColdException, TooWarmException {
if (this.leftJuices < 1) throw new NoJuiceException("Unfortunately, there is no juice left. Come back tomorrow.");
this.leftJuices = leftJuices-1;
System.out.println();
System.out.println("You have bought a juice, there are " + this.leftJuices + " left.");
if (this.temperature < 9) throw new TooColdException("The juice is too cold.");
if (this.temperature > 15)throw new TooWarmException("The juice is too warm.");
System.out.println("Drink successful.");
}
}
Еще дальше Не по теме: Соглашения об именах Java имеют имена переменных, начинающиеся со строчной буквы.
Еще больше не по теме: вы проверяете «слишком холодно»/«слишком тепло» ПОСЛЕ того, как вы уже продали напиток и уменьшили свой счетчик. Вероятно, вам следует изменить порядок этих проверок...
Вы создаете 3 отдельных экземпляра JuiceStore
, каждый со своим счетчиком leftJuices
. Когда вы закончите со всеми ними, все их переменные leftJuices будут равны 2.
Если вы хотите разделить переменную между экземплярами, сделайте это static
или просто сделайте всего один JuiceStore.
Не по теме: ваш метод
main
имеет дублированный код, с той лишь разницей, какую переменную «Juice» он использует. Рассмотрите возможность уменьшения дублирования кода с помощью комбинации массивов, циклов и дополнительных методов.