Не срабатывает switch-case/if-else условие. Java

186
10 сентября 2018, 16:00

Упражняюсь в Java на Codewars. В задачке речь идет об очереди в кинотеатр, где билет на фильм стоит 25 долларов, а у посетителей могут быть купюры в 25, 50 и 100 долларов (автор кто-то из русских, судя по контексту).

Так вот, с самого начала у кассира Васи нет сдачи и вопрос состоит в том, сможет ли он обслужить очередь, продавая каждому из пришедших по одному билету. Т.е. на сдачу у него будут только те купюры, что он взял с начала работы, а если в какой-то момент у него не получается насобирать сдачу, то все - программа должна возвратить "NO".

Если же клиенты в очереди расположены так, что Васе удается "распетлять" со сдачей, и все люди в очереди (до последнего) смогли купить по билету и получить сдачу, то программа должна возвратить "YES".

Line.Tickets(new int[] {25, 25, 50}) // => YES

Line.Tickets(new int[]{25, 100}) // => NO. Vasya will not have enough money to give change to 100 dollars

Line.Tickets(new int[] {25, 25, 50, 50, 100}) // => NO. Vasya will not have the right bills to give 75 dollars of change (you can't make two bills of 25 from one of 50)

У меня создается впечатление, что просто сразу срабатывает строчка

return "YES";

а программа в цикл и ветвления вообще не заходит...

public class Line {
  public static String Tickets(int[] peopleInLine) {
  int counter25 = 0;
  int counter50 = 0;
  int counter100 = 0;
for (int i=0; i < peopleInLine.length - 1; i++) {      
  switch (peopleInLine[i]) {
    case 25:
      counter25 = counter25 + 1;
      break;
    case 50:
      if (counter25 > 0) {
        counter50 = counter50 + 1;
        counter25 = counter25 - 1;  
      } else {
        return "NO";
      } 
      break;
    case 100:
      if (counter50 > 0 && counter25 > 0) {
        counter100 = counter100 + 1;
        counter50 = counter50 - 1;
        counter25 = counter25 - 1;
      } else if (counter50 == 0 && counter25 > 2) {
        counter100 = counter100 + 1;
        counter25 = counter25 - 3;
      } else {
        return "NO";
      }
      break;
  }
}
return "YES";
}   
}

В чем моя ошибка?

READ ALSO
Как в бета версии сделать отправку определенных данных разработчику?

Как в бета версии сделать отправку определенных данных разработчику?

Разместил Бета версию приложения в PlayMarketНа период тестирования в приложении будет кнопка "Отправка статистики разработчику"

198
Абстрактные классы и композиция Java

Абстрактные классы и композиция Java

Можно ли использовать композицию, когда оба класса абстрактные? Например, у меня есть абстрактный класс Тело (от него я буду создавать конусы,...

166
Побитовая операция

Побитовая операция

Что происходит в данной строке?

192
Joda-Time. Корректна такая реализация?

Joda-Time. Корректна такая реализация?

Нужно на выходе получить такую строку 2018-05-08T10:41:00000+07:00

173