Программа не работает. В чем ошибка? [закрыт]

177
10 декабря 2021, 08:30
Закрыт. Этот вопрос не по теме. Ответы на него в данный момент не принимаются.

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском.

Закрыт 2 года назад.

Улучшить вопрос

Не могу понять в чем ошибка? Необходимо что бы программа выводила на экран блюда которые можно приготовить из имеющихся ингредиентов

public class Loader {
    public static void main(String[] args) {
        int milkAmount = 200; // ml
        int powderAmount = 5; // g
        int eggsCount = 3; // items
        int sugarAmount = 5; // g
        int oilAmount = 30; // ml
        int appleCount = 8;
        boolean canNotDoAnything = false;
        //powder - 400 g, sugar - 10 g, milk - 1 l, oil - 30 ml
        if ((milkAmount >= 1000) && (powderAmount >= 400) && (sugarAmount >= 10) && (oilAmount >= 30)) ;
        {
            System.out.println("Pancakes");
            boolean canNotDoAnything = true;
        }
        //milk - 300 ml, powder - 5 g, eggs - 5
        if ((milkAmount >= 300) && (powderAmount >= 5) && (eggsCount >= 5)) ;
        {
            System.out.println("Omelette");
            boolean canNotDoAnything = true;
        }
        //apples - 3, milk - 1000 ml, powder - 300 g, eggs - 4
        if ((appleCount >= 3) && (milkAmount >= 100) && (powderAmount >= 300) && (eggsCount >= 4)) ;
        {
            System.out.println("Apple pie");
            boolean canNotDoAnything = true;
        }
        if (canNotDoAnything == false) ;
        {
            System.out.println("Недостаточно ингридиентов для приготовления");
        }
    }
}
Answer 1

Уберите boolean перед canNotDoAnything во всех местах кроме первого.

И точку с запятой во всех if строчках.

Answer 2

Ошибка в данном коде возникает на этапе компиляции. Вероятно, вы не используете интегрированную среду разработки. Иначе вы без труда бы ее обнаружили.

Ошибка в следующем. После объявления переменной boolean canNotDoAnything больше нельзя указывать ее тип при следующих к ней обращениях. А вы это делаете каждый раз.

Еще в вашем коде есть логическая ошибка. После описания условия в блоках if точку с запятой ставить не нужно. Иначе блок кода, идущий за if будет считаться самостоятельным и выполнится в любом случае.

И одна ошибка смысловая. Булева переменная canNotDoAnything судя по названию должна принимать значение false, когда из имеющихся ингредиентов можно хоть что-нибудь приготовить. А у вас наоборот ;)

В итоге работающий код будет выглядеть вот так:

    public class Loader {
        public static void main(String[ ] args){
            int milkAmount = 200; // ml
            int powderAmount = 5; // g
            int eggsCount = 3; // items
            int sugarAmount = 5; // g
            int oilAmount = 30; // ml
            int appleCount = 8;
            boolean canNotDoAnything = true;
            //powder - 400 g, sugar - 10 g, milk - 1 l, oil - 30 ml
            if (milkAmount >= 1000 && powderAmount >= 400 && 
                sugarAmount >= 10 && oilAmount >= 30)
            {
                System.out.println("Pancakes");
                canNotDoAnything = false;
            }
            //milk - 300 ml, powder - 5 g, eggs - 5
            if (milkAmount >= 300 && powderAmount >= 5 && eggsCount >= 5)
            {
                System.out.println("Omelette");
                canNotDoAnything = false;
            }
            //apples - 3, milk - 1000 ml, powder - 300 g, eggs - 4
            if (appleCount >= 3 && milkAmount >= 100 && 
                powderAmount >= 300 && eggsCount >= 4)
            {
                System.out.println("Apple pie");
                canNotDoAnything = false;
            }
            if (canNotDoAnything)
            {
                System.out.println("Недостаточно ингредиентов для приготовления");
            }
        }
    }
READ ALSO
Простой Junit test для метода в Java

Простой Junit test для метода в Java

Только начинаю постигать полезности тестированияПеречитал много ответов здесь и в гугле в целом, но ответа не нашел

192
SQLite + Hibernate

SQLite + Hibernate

Не получается задать относительный путьПосле создания артефакта (IDEA) при открытии сессии выводит ошибку: javax

76
Как правильно создавать модели данных

Как правильно создавать модели данных

Делаю приложение "Список дел/задач"

158
Как из трехмерного массива получить одномерный, удовлетворяющий условию задачи?

Как из трехмерного массива получить одномерный, удовлетворяющий условию задачи?

В вузе задали задачу на java, подскажите как её решить? Или может какие-нибудь обучающие материалы о том, как решать подобныеДалее текст на английском:

139