Loading...
Tarantula83 avatar Tarantula83 3 Точки

Задача Fishing Boat ?

Здравейте колеги!

Judge ми дава само 46/100 точки и не мога да разбера кое не наред.Моля някои да погледне кода и да каже къде е грешката!

Нулевите тестове минават но другите гърмят а аз не мога да видя защо.

Ето го и кода ми:

import java.util.Scanner;

public class FishingBoat {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int budget = Integer.parseInt(scanner.nextLine());
        String season = scanner.nextLine();
        int fishmans = Integer.parseInt(scanner.nextLine());

        double rent = 0;
        double sum = 0.0;

        switch (season){
            case "Spring":
                rent = 3000;
                break;
            case "Summer":
                rent = 4200;
                break;
            case "Autumn":
                rent = 4200;
                break;
            case "Winter":
                rent = 2600;
                break;
                default:
        }
        if (fishmans <= 6){
            sum = rent - (0.1 * rent);
        }else if (fishmans > 7 && fishmans <= 11){
            sum = rent - (0.15 * rent);
        }else if (fishmans > 12){
            sum = rent - (0.25 * rent);
        }
        if (fishmans % 2 == 0 &&  !(season.equals("Autumn"))){
            sum = rent - (0.95 * rent);

            }
            double result = sum - budget;
            if (budget > sum){
                System.out.printf("Yes! You have " + "%.2f" + " leva left.",result * -1);
        }else {
                System.out.printf("Not enough money! You need "  + "%.2f" + " leva.",result);
            }
    }
}

Благодаря предварително!

Тагове:
0
Programming Basics
svetoslav_0 avatar svetoslav_0 1009 Точки

Проблемът ти идва от допълнителната отстъпка (с 5-те процента). Трябва да сметнеш допълнителна отстъпка. В този смисъл трябва да извадиш 5% от вече получената стоност на променливата sum, без изобщо да намесваш rent. Тоест трябва да стане нещо такова:

sum = sum * 0.95;

Още нещо съвсем вкрая: когато бюджетът е равен на сумата, тогава също им стигат парите :D

budget >= sum

 

1
Tarantula83 avatar Tarantula83 3 Точки

Така е по добре но дава само 86/100 точки.Гърми на 2 теста някъде.

0
svetoslav_0 avatar svetoslav_0 1009 Точки

Кои? Първи и трети тест ? 

0
Tarantula83 avatar Tarantula83 3 Точки

Да тия двата се чупят незнам защо.

0
REEEEVered avatar REEEEVered 0 Точки

Промени int budget на double.

0
03/10/2018 12:41:12
svetoslav_0 avatar svetoslav_0 1009 Точки

Ще ти дам подсказка, въпреки, че вече го направих: ако имат 100 лв и всичко им струва 100 лв, ще им стигнат ли парите? 

0
03/10/2018 13:23:52
Plamenovv avatar Plamenovv 1 Точки

Пробвай тук 

else if (fishmans > 7 && fishmans <= 11)

да го направиш  

else if (fishmans <= 11) , защото така ще включиш случая и ако има 7 рибари.

 

и махна ли = от budget >= sum?

на мен ми гърмеха 2-ри и 3-ти, защото правех същата проверка.

0
svetoslav_0 avatar svetoslav_0 1009 Точки

Грешката най - вероятно идва съвсем вкрая:

if (budget > sum){ ...}

Ако погледнем случая, когато budget = sum, тогава реално погледнато парите им стигат.

Така че трябва да изглежда по този начин:

if (budget >= sum){ ... } 
0
Tarantula83 avatar Tarantula83 3 Точки

Пф намерих я тая грешка най-накрая,сега вече е 100/100 точки.

Грешката беше на тоя ред:

double result = sum - budget;
            if (budget > sum){
                System.out.printf("Yes! You have " + "%.2f" + " leva left.",result * -1);
        }else {
                System.out.printf("Not enough money! You need "  + "%.2f" + " leva.",result);
            }
    }
}

А трябва да е ето така:

 double result = budget - sum;
        if (budget >= sum) {
            System.out.printf("Yes! You have " + "%.2f" + " leva left.", result);
        } else {
            System.out.printf("Not enough money! You need " + "%.2f" + " leva.", result * -1);
        }
    }
}

Луда работа скъса ми нервите :)

 

0
jorkaev avatar jorkaev 5 Точки

https://pastebin.com/5SHiReqy 100/100

но моето решение е без switch

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