Loading...
RosenTheHacker avatar RosenTheHacker 7 Точки

Programing basics exam 7 may задача 3

здравейте задачата ми гърми на 2 теста в jude и искам да попитам къде ми е грешката?

 

 

 

package com.company;

import java.util.Scanner;

public class Main {
private static String repeat(String str , int count){
    String result ="";
    for (int i = 0; i <count ; i++) {
     result+=str;
    }
    return result;
}
    public static void main(String[] args) {
        Scanner console = new Scanner(System.in);

String season = console.nextLine().toLowerCase();
String group = console.nextLine().toLowerCase();
double schuler = Double.parseDouble(console.nextLine());
double nights = Double.parseDouble(console.nextLine());
double price =0;
double total=0;

String sport ="";
if(group.equals("boys")||group.equals("girls")){
if(season.equals("summer")){
    if(group.equals("boys")){
        sport="Football";
    }else if(group.equals("girls")){
     sport="Volleyball";
    }
price =15;
total=schuler*price*nights;
    if(schuler>=50){
        total-=total*0.5;
    }else if(schuler>=20&&schuler<50){
        total-=total*0.15;
    }else if(schuler>=10&&schuler<20){
        total-=total*0.05;
    }
}else if(season.equals("spring")){
    if(group.equals("boys")){
        sport="Tennis";
    }else if(group.equals("girls")){
        sport="Athletics";
    }
price=7.2;
    total=schuler*price*nights;
    if(schuler>=50){
        total-=total*0.5;
    }else if(schuler>=20&&schuler<50){
        total-=total*0.15;
    }else if(schuler>=10&&schuler<20){
        total-=total*0.05;
    }
        }else if(season.equals("winter")){
    if(group.equals("boys")){
        sport="Judo";
    }else if(group.equals("girls")){
        sport="Gymnastics";
    }
price =9.6;
    total=schuler*price*nights;
    if(schuler>=50){
        total-=total*0.5;
    }else if(schuler>=20&&schuler<50){
        total-=total*0.15;
    }else if(schuler>=10&&schuler<20){
        total-=total*0.05;
    }
}}else {
    if(season.equals("winter")){
        sport="Ski";
        price =10;
        total=schuler*price*nights;
        if(schuler>=50){
            total-=total*0.5;
        }else if(schuler>=20&&schuler<50){
            total-=total*0.15;
        }else if(schuler>=10&&schuler<20){
            total-=total*0.05;
        }
    } else if(season.equals("spring")){
        sport="Cycling";
        price=9.5;
        total=schuler*price*nights;
        if(schuler>=50){
            total-=total*0.5;
        }else if(schuler>=20&&schuler<50){
            total-=total*0.15;
        }else if(schuler>=10&&schuler<20){
            total-=total*0.05;
        }else if(season.equals("summer")){
         sport="Swimming";

            price =20;
            total=schuler*price*nights;
            if(schuler>=50){
                total-=total*0.5;
            }else if(schuler>=20&&schuler<50){
                total-=total*0.15;
            }else if(schuler>=10&&schuler<20){
                total-=total*0.05;
            }
        }
    }
}
        System.out.printf("%s %.2f lv.",sport,total);
    }}
0
Programming Basics
KeepCoding avatar KeepCoding 554 Точки

Ето го кодът само с една корекция (преместих една къдрава скоба): https://pastebin.com/P4qHtPWw
Грешката беше, че в тялото на 

if (season.equals("spring"))

влиза и кодът за случая

if (season.equals("summer"))

Т.е.  "if (season.equals("summer"))" в логиката на кода ти е вложена проверка, свързана с проверките за броя на учениците. Ако бройката е еди каква си то тогава... , ако е еди каква си то тогава ... и изведнъж от проверка на бройка на ученици се извършва проверка за сезонът. Нормално е да се правят такива грешки с толкова много вложени проверки. Моите съвети да избягваш такива повторни грешки са:

1) Ако се повтаря много код, намери начин да опростиш нещата. В този случай правиш проверка за бройката на учениците във всяка проверка за сезон като може да се направи и извън тези проверки. Аз съм го направил по такъв начин в началото на кода ми: https://pastebin.com/5pFmry2Y 

2) Ако преместиш текстовия редактор пред/зад къдрава скоба, ще видиш как IntelliJ подчертава и двете къдрави скоби, които обособяват тяло/блок от код.

1
Angel_Kalinkov avatar Angel_Kalinkov 111 Точки

Здравей Росене! Този метод, който го пишеш в началото е напълно излишен за тази задача. Той ще ти свърши работа, ако трябва да нарисуваш нещо. Моето решение е малко по-различно. Разгледай го, надявам се да ти е от полза: https://pastebin.com/6Aajb6Ex

0
10/12/2017 14:53:12
RosenTheHacker avatar RosenTheHacker 7 Точки

здравей.

знам че метода е излишен, но пък и няма да пречи на програмата.

Иначе благодаря!

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