Java if / for помощь цикла

1

Ниже мой код... Я пытаюсь сделать таймер обратного отсчета. Сейчас он работает правильно с точки зрения подсчета в правильном последовательном порядке. Я пытаюсь выяснить, как разместить оператор if в коде, чтобы он печатал 1 минуту и 'секунды, а не 1 минуту и секунды

import java.util.Scanner;

public class countdown {

public static void main(String[] args) {

    Scanner scan = new Scanner(System.in);
    int minutes;
    System.out.println("Please enter the timer countdown in minutes:");
    minutes = scan.nextInt();

    while (minutes < 1) {
        System.out.print("Invalid entry: Enter 1 or more minutes: ");
        minutes = scan.nextInt();
    }
    for (int i = minutes - 1; i >= 0; i--)

    {
        for (int s = 59; s >= 1; s--)

            System.out.println(i + " minutes, " + s + " seconds");
        System.out.println("The timer is done!");

    }

}

}

Теги:

3 ответа

0
Лучший ответ

просто добавьте там оператор if/else:

for (int i = minutes - 1; i >= 0; i--){
    String minute;
    if(minutes == 1)
        minute = " minute ";
    else
        minute = " minutes ";

    for (int s = 59; s >= 1; s--){
        String seconds;
        if(s == 1)
            seconds = " second";
        else
            seconds = " second";
        System.out.println(i + minute + s + seconds);
    }
}

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

  • 0
    это определенно работает для i == 1 до минуты, но как мне включить s == 1 в секунду вместо секунд?
  • 0
    я попробовал следующее, и это только исправляет проблему на 0 секунд, 1 секунду ..
Показать ещё 3 комментария
1

Как это,

String minutes = i + (i > 1 ? " minutes" : " minute"); // put this line in outer loop
String seconds = s + (s > 1 ? " seconds" : " second"); // and this line in inner loop

System.out.println(minutes +", "+ seconds);
  • 0
    Я думаю, что имеет смысл определять minutes во внешнем, а не во внутреннем цикле.
  • 0
    @ a1ex07 да ....
0

Эти два оператора if/else должны работать.

for (int s = 59; s >= 1; s--)
    {
        if (i == 1)
            System.out.print(i + " minute, ");
        else
            System.out.print(i + " minutes, ");
        if (s == 1)
            System.out.println(s + " second");
        else 
            System.out.println(s + " seconds");
    }
  • 0
    спасибо за помощь ... я пробовал другое, если и это не работало.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню