JavaRush /Курсы /Курс "Программирование под Андроид" /Отрицательное количество чашек кофе

Отрицательное количество чашек кофе

Курс "Программирование под Андроид"
10 уровень, 1 лекция
Открыта

Обратите внимание, что нам нужно такое условие, которое будет истиной, когда количество чашек кофе не должно изменяться.

Подсказка: Ключевое слово “return” можно поставить внутри блока if, чтоб прекратить выполнение метода досрочно. Прочтите самый популярный ответ в этой ветке портала StackOverflow.

Свои ответы и вопросы можете оставлять в комментариях.

Комментарии (19)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Эшли Уровень 10
20 апреля 2022
При генерации всплывающего сообщения, пожалуйста, не забывайте указывать toast.show();
Эшли Уровень 10
20 апреля 2022
Хотите простое решение? Я просто скрыл кнопку минус, если значение quantity меньше 1 xD Ты не можешь установить отрицательное значение, если нет кнопки xD
Name Unknown ;) Уровень 2
4 февраля 2021
Здесь активно используется Toast, а в одном из комментов упомянули SnackBar. Расскажу здесь о разнице между ними и оставлю несколько ссылок (во втором комменте), чтобы легче было сориентироваться в этой теме, на удивление объёмной и даже в чём-то научной. Для начала сравнение из первой ссылки: Toast: был добавлен в API Level 1 В основном работа не требуется (может отображаться как бы "над" приложением) Он не может выполнять действие, основанное на пользовательском вводе Он не может быть отклонен путем прокрутки Он не может обрабатывать ввод пользователя, например, Swipe, Click и т.д. SnackBar добавили в API 23 Он может отображаться внутри действия приложений Он может выполнять действие Это может быть отклонено путем прокрутки Он может обрабатывать ввод пользователя Хорошо показывать сообщения типа предупреждения/информации пользователю, которому требуется внимание. Использование SnackBar: Он может использоваться в тех областях, где необходимо отображать всплывающее сообщение с возможностью выполнения действий. Пример: в GMail при удалении почты быстрый экран SnackBar внизу с сообщением ("1 удалено кнопкой действия" Отменить). При нажатии кнопки "Отменить" удаленная почта будет восстановлена. Использование Toast: Может использоваться в тех областях, где необходимо отображать сообщения системы.
🦔 Виктор Уровень 20 Expert
2 декабря 2020
1. В методе инкремента и декремента сначала поставить проверку, например, Если кол-во чашек меньше ста, то тогда увеличить на одну, Иначе тост с предупреждением. 1.1. Можно ещё тернарным оператором побаловаться:

display(quantity > 0 ? --quantity : 0);
2. Можно легко создать тост а андроид студии — начинаем писать Toast и IDE предлагает за нас сгенерить готовый каркас, в который остаётся вставить только аргументы (текст и продолжительность). 3. Всё получится!
Аслан Кашиев Уровень 1
21 апреля 2020
Сначала пытался вызвать метод makeText у переменной toast, код компилировался, но при нажатии приложение падало. Затем осознал ошибку, надо к просто присвоить переменной toast вызов статического метода Toast.makeText(...)

//Неправильно 
toast.makeText(getApplicationContext(), "Невозможно заказать меньше 1 чашки", Toast.LENGTH_SHORT);
//Правильно 
toast = Toast.makeText(getApplicationContext(), "Невозможно заказать меньше 1 чашки", Toast.LENGTH_SHORT);
Anatoliy Уровень 10
7 июля 2020

Toast.makeText(getApplicationContext(),"Извините,количество не может быть меньше 1 ",Toast.LENGTH_SHORT ).show();
Очень даже неплохо работает
Name Unknown ;) Уровень 2
4 февраля 2021
У тебя в пункте "неправильно" весь прикол в том, что первая буква маленькая, а должна быть большая. В таком случае можно было спокойно писать без присвоения переменной так, как написано в соседнем комменте у Anatoliy. Ничего страшного, в кодинге очень сложно с избеганием появления "туннельного зрения" или "зашоренности" (видели такие штуки у лошадей, у глаз по бокам? это "шоры"), когда даже слона не видишь.
Richard Winter Уровень 12
4 апреля 2019

    /*Формируем метод с сообщением*/
    public void showTooManyCupsToast() {
        Toast tooManyCupsToast = Toast.makeText(getApplicationContext(),
                "Вы не можете заказать больше 100 чашек", Toast.LENGTH_SHORT);
        tooManyCupsToast.show();
    }

    /*Формируем метод с сообщением*/
    public void showTooLittleCupsToast() {
        Toast tooLittleCupsToast = Toast.makeText(getApplicationContext(),
                "Вы не можете заказать меньше 1 чашки", Toast.LENGTH_SHORT);
        tooLittleCupsToast.show();
    }

   /*Кнопка увеличения*/
    public void increment(View view) {
        if (quantity <= 99){
            quantity = ++quantity;
        }else {showTooManyCupsToast();}
        display(quantity);
        /*display(quantity <= 99? ++quantity : quantity);*/
    }

    /*Кнопка уменьшения*/
    public void decrement(View view) {
        if (quantity <= 1){
            showTooLittleCupsToast();
        }else {quantity = --quantity;}
        display(quantity);
        /*display(quantity <= 1? quantity : --quantity);*/
    }
Тимур Уровень 23
30 сентября 2018
Тут все сделано, еще добавил немного наворотов
Юлия Алпатова Уровень 1
24 января 2018
Я сделала так:

     * Этот метод вызывается, когда нажимают кнопку "+"
     */
    public void increment(View view) {
        quantity = quantity + 1;
        if (quantity > 100) {
            quantity = 100;
            Toast.makeText(this,"Нельзя заказать больше 100 чашек", Toast.LENGTH_SHORT).show();
        }
        displayQuantity(quantity);
    }

    /**
     * Этот метод вызывается, когда нажимают кнопку "-"
     */
    public void decrement(View view) {
        quantity = quantity - 1;
        if (quantity < 1) {
            quantity = 1;
            Toast.makeText(this,"Нельзя заказать меньше 1 чашки", Toast.LENGTH_SHORT).show();
        }
        displayQuantity(quantity);
    }

Но в решебнике предлагают это:

  /**
     * This method is called when the plus button is clicked.
     */
    public void increment(View view) {
        if (quantity == 100) {
            // Show an error message as a toast 
            Toast.makeText(this, "You cannot have more than 100 coffees", Toast.LENGTH_SHORT).show();
            // Exit this method early because there's nothing left to do
            return;
        }
        quantity = quantity + 1;
        displayQuantity(quantity);
    }

    /**
     * This method is called when the minus button is clicked.
     */
    public void decrement(View view) {
        if (quantity == 1) {
            // Show an error message as a toast 
            Toast.makeText(this, "You cannot have less than 1 coffee", Toast.LENGTH_SHORT).show();
            // Exit this method early because there's nothing left to do
            return;
        }
        quantity = quantity - 1;
        displayQuantity(quantity);
    }
Программирование - это как перевод от разных переводчиков: суть та же, но слова разные))
Поддубный Иван Уровень 39
25 февраля 2018
Юлия, у Вас избыточная строка в коде, которая сбивает с толку на самом деле... чуть позже вы поймете почему, но в целом Ваш код читаем и хорошо написан

if (quantity > 100) {
        quantity = 100;
Name Unknown ;) Уровень 2
4 февраля 2021
Для остальных поясню: Обратите внимание на то, где у Юлии и в решебнике расположены строки quantity = quantity + 1; и quantity = quantity - 1; У Юлии они перед проверкой находятся, а в решебнике - после условия. Второй способ для новичков и правда неочевиден, но зато он позволяет обойтись без такого: if (quantity > 100) { quantity = 100; //я про эту строчку Т.к. если сначала условие проверяется и получится true, то до строчки quantity = quantity + 1; дело попросту не дойдёт, благо в условии if поставили return. В общем, учимся и офигеваем дальше =)))
Roman Уровень 10
10 октября 2017
Ну и намаялся с заданием на пятёрку (всплывающее окно). Оказывается в eEmpty Activity эта функция по умолчанию не подключена. Как подключать читаем тута - https://metanit.com/java/android/4.14.php
Vlad Уровень 8
22 октября 2017
А почему не с помощью Toast ?
8 августа 2017
Можно заблокировать через кнопки когда один и меньше блокировать минус, когда 100 и больше блокировать плюс.При случайном перескоке сбрасывать на крайнее положение. Тогда только программист сможет перейти за границы. Ну и конечно проверять эти значения в самом заказе, на всякий случай
AndSky Уровень 1
9 ноября 2017
Нужно сделать и блокировку, и всплывающее сообщение. пишем Toast, в студии всплывает подсказка create new Toast, нажимаем на неё, и все готово: Toast.makeText(this, "Нельзя меньше", Toast.LENGTH_SHORT).show();
Андрей Тарасов Уровень 1
30 ноября 2017
Зачем блокировать, можно указать в условии, если кол-во больше 100, то кол-во равно 100. Если кол-во меньше 1, то кол-во равно 1 Вот кусок для плюса

quantity++;
        if(quantity > 100){
            quantity = 100;
        }
Panda Уровень 7
15 января 2018
вот вот. давно так делал. все гениальное просто))