Почему if-ы в цикле не идут по порядку? (Java)

228
31 марта 2018, 16:13
    int moneyUser;
    Scanner money = new Scanner(System.in);
    System.out.print("Привет! Сколько нужно разменять? : ");
    moneyUser = money.nextInt();
    int coin = 1;

   while (moneyUser > 0){
       if(moneyUser > 25){
            moneyUser -= 25;
            coin++;   
        }else if (moneyUser < 25){
            moneyUser -= 10;
            coin++;
        }else if (moneyUser < 10){
            moneyUser -= 5;
            coin++;
        } else if (moneyUser < 5){
            moneyUser -= 1;
            coin++;
        } else {
    System.out.println(coin);
}
       }

Дано: монетки номиналом 25, 10, 5, 1 цент

Программа должна:

  Спросить пользователя, сколько сдачи нужно выдать
    Посчитать минимальное количество монет, с помощью которых можно это сделать
Answer 1

Будьте внимательнее, программа зацикливается, потому что Вы не правильно прописали условия в if-ах. Если Вы введете число 25, то не выполниться не одно условие (25 > 25 = false и 25 < 25 = false). Исправьте условие if(moneyUser > 25) на if(moneyUser >= 25) и все будет работать. Еще нужно исправить else if (moneyUser < 25) на else if (moneyUser < 25 && moneyUser >= 10), так как если, допустим, Вы введете число 2, то теоретически могут выполниться три последних цикла: else if (moneyUser < 25), else if (moneyUser < 10), else if (moneyUser < 5) и Вы можете получить отрицательное число.

READ ALSO
что не так с pointcut?

что не так с pointcut?

На tutorialspoint приведен такой пример по спрингу:

226
JavaFX LineChart

JavaFX LineChart

Можно ли добавлять точки кликом мышкой по графику?

203
POST, PUT - Проблемы с UTF-8

POST, PUT - Проблемы с UTF-8

Запросы POST и PUT просят UTF-8Сервер выдаёт

180
Как удалить символ &ldquo;\&rdquo; из строки?

Как удалить символ “\” из строки?

Как удалить символ "\" из строки? Так не получается

183