Loading...
Selda avatar Selda -1 Точки

Programing Basic with Java - проблем със задача сумиране на секунди

Това е кода :

public class SumSeconds {
    public static void main(String[] args) {
        Scanner console = new Scanner(System.in);
        Integer Seconds1 = Integer.parseInt(console.nextLine());
        Integer Seconds2 = Integer.parseInt(console.nextLine());
        Integer Seconds3 = Integer.parseInt(console.nextLine());
        Integer Seconds = Seconds1 + Seconds2 + Seconds3;
        Integer Minutes = 0;

        if (Seconds<60){
            System.out.println(Minutes + ":" + Seconds);
        }
        if (Seconds>59){
            Minutes++;Seconds = Seconds-60;

        }else if (Seconds>119){
            Minutes++;Seconds = Seconds-120;

        }if (Seconds<10){
            System.out.println(Minutes + ":" + "0" + Seconds);
        }
    }
}

Изчислява времената на състезатели въведени от потребителя и пресмята сумарното им време във формата на минути и секунди. Не мога да разбера къде греша... сумира при вход 14,12,10, както и при 22, 7, 34. Не пресмята при вход 35, 45, 44, както и 50,50,49.

Тагове:
0
Programming Basics
KeepCoding avatar KeepCoding 554 Точки
Best Answer

Трябва да размениш местата на if (seconds>119) и if (seconds>59). Ако имаш 70 секунди, то попада в категорията if (seconds>59). Ако имаш 140 секунди, пак попада в категорията if (seconds>59) и не се стига до проверката дали е над 119, защото предното условие вече е било изпълнено.

Също така има и малко по-лесен и удобен начин за допълване на число с нули

System.out.printf("%02d", (Seconds));
0
Selda avatar Selda -1 Точки

Благодаря!

Опитах със смяната, но явно греша някъде и...Това с допълване на число с 0 е супер полезно :)

0
KeepCoding avatar KeepCoding 554 Точки

Колега беше изтъкнал и една друга грешка, но коментарът е изчезнал. При секунди над 120 ще трябва да се добавят две единици към минутата, а не една. "++" добавя само една единица. При случая с над 119 секунди ще трябва да напишеш "minutes = minutes + 2" или "minutes += 2". Бих препоръчал да ползваш малка буква за първа буква на имената на променливите. Лекторите така казват, защото е добра практика и е прието по-скоро имената на класове да започват с главна буква. Добра практика е и когато се напише " ; " да се започне на нов ред.

Леко пренаписах кода ти. Минава в judge на 100% https://pastebin.com/JCrBu5Kd

Ето и една по-различна версия, която използва някои операции, които ще ти трябват за по-нататъшни задачки. И тази версия има 100 точки в judge https://pastebin.com/GC8KDgNg

По-различната версия използва целочислено деление и намиране на модул (операция %). Набързо обяснени са тук: https://pastebin.com/aSuBTfYR

0
24/10/2017 23:38:02
Selda avatar Selda -1 Точки

Много Благодаря!

Изключително полезно!!!!

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.