Софтуерно Инженерство
Loading...
+ Нов въпрос
dmivanova avatar dmivanova 1 Точки

Проблем със задача Fishing Boat - 86/100

Здравейте, имам проблем със задача Fishing Boat, прегледах решенията във форума, но така и не разбрах къде ми е грешката. Може ли някой да погледне и да ми даде насоки къде греша и защо judge ми дава 86/100. Много благодаря! smiley

package boat_fishing;

import java.util.Scanner;

public class BoatFishing {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Scanner scanner = new Scanner(System.in);
		int budget = Integer.parseInt(scanner.nextLine());
		String season = scanner.nextLine();
		int fisherCount = Integer.parseInt(scanner.nextLine());
		double priceWithDiscount = 0.0;
		boolean extraDiscountSeason = ("Spring".equals(season) || "Summer".equals(season)
				|| "Winter".equals(season));

		if ("Spring".equals(season)) {
			if (fisherCount <= 6) {
				priceWithDiscount = 3000 * 0.9;
			} else if (fisherCount <= 11) {
				priceWithDiscount = 3000 * 0.85;
			} else if (fisherCount <= 18) {
				priceWithDiscount = 3000 * 0.75;
			}
		} else if ("Summer".equals(season) || "Autumn".equals(season)) {
			if (fisherCount <= 6) {
				priceWithDiscount = 4200 * 0.9;
			} else if (fisherCount <= 11) {
				priceWithDiscount = 4200 * 0.85;
			} else if (fisherCount <= 18) {
				priceWithDiscount = 4200 * 0.75;
			}
		} else if ("Winter".equals(season)) {
			if (fisherCount <= 6) {
				priceWithDiscount = 2600 * 0.9;
			} else if (fisherCount <= 11) {
				priceWithDiscount = 2600 * 0.85;
			} else if (fisherCount <= 18) {
				priceWithDiscount = 2600 * 0.75;
			}
		}
		if (extraDiscountSeason && fisherCount % 2 == 0) {
			priceWithDiscount = priceWithDiscount * 0.95;
		}
		if (budget > priceWithDiscount) {
			System.out.printf("Yes! You have %.2f leva left.", budget - priceWithDiscount);
		} else {
			System.out.printf("Not enough money! You need %.2f leva.", priceWithDiscount - budget);
		}
	}

}

 

Тагове:
0
Programming Basics with Java
mark79 avatar mark79 561 Точки

Здравей,

мисля, че нямаш такова условие в заданието ..

fisherCount <= 18

И накрая проверката има нужда и от равенство ..

if (budget >= priceWithDiscount) {

Поздрави :)

PS -> Ако искаш може да разгледаш един малко по-оптимизиран код тук.

0
07/10/2019 22:43:12
dmivanova avatar dmivanova 1 Точки

Привет, и без него резултатът е същият. sad 

Видях, че е добавено от един колега и реших и това да пробвам.

package boat_fishing;

import java.util.Scanner;

public class BoatFishing {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Scanner scanner = new Scanner(System.in);
		int budget = Integer.parseInt(scanner.nextLine());
		String season = scanner.nextLine();
		int fisherCount = Integer.parseInt(scanner.nextLine());
		double priceWithDiscount = 0.0;
		boolean extraDiscountSeason = ("Spring".equals(season) || "Summer".equals(season)
				|| "Winter".equals(season));

		if ("Spring".equals(season)) {
			if (fisherCount <= 6) {
				priceWithDiscount = 3000 * 0.9;
			} else if (fisherCount <= 11) {
				priceWithDiscount = 3000 * 0.85;
			} else {
				priceWithDiscount = 3000 * 0.75;
			}
		} else if ("Summer".equals(season) || "Autumn".equals(season)) {
			if (fisherCount <= 6) {
				priceWithDiscount = 4200 * 0.9;
			} else if (fisherCount <= 11) {
				priceWithDiscount = 4200 * 0.85;
			} else {
				priceWithDiscount = 4200 * 0.75;
			}
		}  else if ("Winter".equals(season)) {
			if (fisherCount <= 6) {
				priceWithDiscount = 2600 * 0.9;
			} else if (fisherCount <= 11) {
				priceWithDiscount = 2600 * 0.85;
			} else {
				priceWithDiscount = 2600 * 0.75;
			}
		}
		if (extraDiscountSeason && fisherCount % 2 == 0) {
			priceWithDiscount = priceWithDiscount * 0.95;
		}
		if (budget > priceWithDiscount) {
			System.out.printf("Yes! You have %.2f leva left.", budget - priceWithDiscount);
		} else {
			System.out.printf("Not enough money! You need %.2f leva.", priceWithDiscount - budget);
		}
	}

}

Това е първоначалното ми решение и не мога да ги докарам до 100. laugh

0
07/10/2019 22:43:26
mark79 avatar mark79 561 Точки

Проверката в края, ако бюджетът е по-голям или е равен липсва. Грешката е от липсата на знака за равенство :)

0
07/10/2019 22:47:56
dmivanova avatar dmivanova 1 Точки

Много благодаря, ще пробвам сега. blush

0