Loading...
ivandm5 avatar ivandm5 17 Точки

Трета задача с цветята от изпита декември

Здравейте, решавам 3та задача на java ама имам плоблем нещо не правя както трябва от 2 дена разучавам java и не мога да разбера къде бъркам ето кода:
 

import java.util.Scanner;

/**
 * Created by ivandimitrov on 1/4/17.
 */
public class fllowers {
    public static void main(String[] args) {



        Scanner scanner = new Scanner(System.in);


        double countHrizantemi = Double.parseDouble(scanner.nextLine());
        double countRozi = Double.parseDouble(scanner.nextLine());
        double countLaleta = Double.parseDouble(scanner.nextLine());
        String season = scanner.nextLine();
        String holiday = scanner.nextLine();
        double otstapkaZaBroi = 1.0;
        double hrizantemi = 1.0;
        double rozi = 1.0;
        double laleta = 1.0;
        double otstapkaZaBroiNadDvaise = 1.0;

        if(season == "Summer" || season == "Spring"){
             hrizantemi = 2.00;
             rozi = 4.10;
             laleta = 2.50;
            if(countLaleta > 7){
            otstapkaZaBroi = 0.05;
            }

        }
        if(season == "Winter" || season == "Autumn"){
            hrizantemi = 3.70;
            rozi = 4.50;
            laleta = 4.15;
            if(countRozi >= 10){
                otstapkaZaBroi = 0.10;
            }
        }
        if((countHrizantemi + countLaleta + countRozi > 20)){
             otstapkaZaBroiNadDvaise = 0.20;
        }
        double price = (countHrizantemi * hrizantemi) + (countRozi * rozi) + (countLaleta * laleta) ;
        double discountPrice = price - (price * otstapkaZaBroi) - (price * otstapkaZaBroiNadDvaise);
        if(holiday == "Y"){
            discountPrice = discountPrice + (discountPrice * 0.15);

        }
        else{
            discountPrice = price - (price * otstapkaZaBroi);
        }
        System.out.print(price);








    }
}

Така както е искам да изкарам първо да сметне общата цена правилно ама нещо въобще не смята във иф и цената я изкарва като само събира въведените данни ни ги умножава изобщо не мога да открия какъв е проблема.

Тагове:
0
Programming Basics
g_todorov avatar g_todorov 106 Точки

Здравей,

задачата е интересна, решил съм я, но на C#. Не съм учил Java, но в общи линии ръзбирам какво си направил - If конструкцийте много си приличат (изглеждат ми идентични), типизирането на данните и аритметичните операции също. Пускам ти кода на C# и съм сигурен, че ще се ориентираш. Ако кодиш на C# пиши тук и мога да обясня кода, а ти ще си го транслираш в Java:

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _03.Flowers
{
    class Program
    {
        static void Main(string[] args)
        {
            var countOfBoughtChrysanthemums = int.Parse(Console.ReadLine());
            var countOfBoughtRoses = int.Parse(Console.ReadLine());
            var countOfBoughtTulip = int.Parse(Console.ReadLine());
            var season = Console.ReadLine();
            var holiday = Console.ReadLine();
            var priceOfChrysanthemums = 0.0;
            var priceOfRoses = 0.0;
            var priceOfTulip = 0.0;
            var totalPrice = 0.0;
            var lastTotalPrice = 0.0;

            switch (season)
            {
                case "Spring":
                    priceOfChrysanthemums = 2.0;
                    priceOfRoses = 4.1;
                    priceOfTulip = 2.5;
                    if (holiday=="Y")
                    {
                        priceOfChrysanthemums *= 1.15;
                        priceOfRoses *= 1.15;
                        priceOfTulip *= 1.15;
                    }
                    break;
                case "Summer":
                    priceOfChrysanthemums = 2.0;
                    priceOfRoses = 4.1;
                    priceOfTulip = 2.5;
                    if (holiday == "Y")
                    {
                        priceOfChrysanthemums *= 1.15;
                        priceOfRoses *= 1.15;
                        priceOfTulip *= 1.15;
                    }
                    break;
                case "Autumn":
                    priceOfChrysanthemums = 3.75;
                    priceOfRoses = 4.50;
                    priceOfTulip = 4.15;
                    if (holiday == "Y")
                    {
                        priceOfChrysanthemums *= 1.15;
                        priceOfRoses *= 1.15;
                        priceOfTulip *= 1.15;
                    }
                    break;
                case "Winter":
                    priceOfChrysanthemums = 3.75;
                    priceOfRoses = 4.50;
                    priceOfTulip = 4.15;
                    if (holiday == "Y")
                    {
                        priceOfChrysanthemums *= 1.15;
                        priceOfRoses *= 1.15;
                        priceOfTulip *= 1.15;
                    }
                    break;

            }
            totalPrice = countOfBoughtChrysanthemums * priceOfChrysanthemums
                     + countOfBoughtRoses * priceOfRoses + countOfBoughtTulip * priceOfTulip;
            if (season == "Spring" && countOfBoughtTulip > 7)
            {
                totalPrice = (countOfBoughtChrysanthemums * priceOfChrysanthemums
                     + countOfBoughtRoses * priceOfRoses + countOfBoughtTulip * priceOfTulip)*0.95;
            }
            if (season=="Winter" && countOfBoughtRoses>=10)
            {
                totalPrice = (countOfBoughtChrysanthemums * priceOfChrysanthemums
                     + countOfBoughtRoses * priceOfRoses + countOfBoughtTulip * priceOfTulip) * 0.9;
            }
            if ((countOfBoughtChrysanthemums+ countOfBoughtRoses+ countOfBoughtTulip)>20)
            {
                totalPrice = totalPrice * 0.8;
            }
            lastTotalPrice = totalPrice + 2;
            Console.WriteLine("{0:f2}",lastTotalPrice);
        }
    }
}

0
vancho avatar vancho 430 Точки

На прима виста виждам, че си написал за if проверката:

if(season == "Summer" || season == "Spring") и if(season == "Winter" || season == "Autumn")

В Java == за стринг сравнява по референция. Стрингове в Java се сравняват:

if(season.equals("Summer") || season.equals("Spring")) и if(season.equals("Winter") || season.equals("Autumn")).

Друго, което видях е че използваш double. За пресмятане на парични операции се използва BigDecimal.

Ако има нещо друго, пиши.

0
05/01/2017 12:09:17
ivandm5 avatar ivandm5 17 Точки
import java.math.BigDecimal;
import java.util.Scanner;


public class fllowers {
    public static void main(String[] args) {



        Scanner scanner = new Scanner(System.in);


        double countHrizantemi = Double.parseDouble(scanner.nextLine());
        double countRozi = Double.parseDouble(scanner.nextLine());
        double countLaleta = Double.parseDouble(scanner.nextLine());
        String season = scanner.nextLine();
        String holiday = scanner.nextLine();
        double otstapkaZaBroi = 1.0;
        double hrizantemi = 1.0;
        double rozi = 1.0;
        double laleta = 1.0;
        double otstapkaZaBroiNadDvaise = 1.0;

        if(season.equals("Summer")  || season.equals("Spring")){
             hrizantemi = 2.00;
             rozi = 4.10;
             laleta = 2.50;
            if(countLaleta > 7){
            otstapkaZaBroi = 0.05;
            }

        }
        if(season.equals("Winter") || season.equals("Autumn")){
            hrizantemi = 3.70;
            rozi = 4.50;
            laleta = 4.15;
            if(countRozi >= 10){
                otstapkaZaBroi = 0.10;
            }
        }
        if((countHrizantemi + countLaleta + countRozi > 20)){
             otstapkaZaBroiNadDvaise = 0.20;
        }
        else{
            otstapkaZaBroiNadDvaise = 0.00;
        }
        double price = (countHrizantemi * hrizantemi) + (countRozi * rozi) + (countLaleta * laleta) ;
        double discountPrice = (price - (price * otstapkaZaBroi)) - (price * otstapkaZaBroiNadDvaise);
        if(holiday.equals("Y")){
            discountPrice = (price + (price * 0.15)) - (price * otstapkaZaBroi)- (price * otstapkaZaBroiNadDvaise)  ;

        }
        else{
            discountPrice = (price - (price * otstapkaZaBroi)) - (price * otstapkaZaBroiNadDvaise);

        }
        discountPrice = discountPrice + 2;
        System.out.print(discountPrice);








    }
}

Мерси за отговорите стигнах до тук проблема е, че не знам как се форматира в джавата примерно 34.04 да изкарва

0
05/01/2017 12:38:49
vancho avatar vancho 430 Точки

System.out.printf("%.2f", discountPrice);

0
ivandm5 avatar ivandm5 17 Точки
using System;

namespace flowersNew
{
	class MainClass
	{
		public static void Main(string[] args)
		{
			int countChrysanthemums = int.Parse(Console.ReadLine());
			int countRoses = int.Parse(Console.ReadLine());
			int countTulips = int.Parse(Console.ReadLine());
			string season = Console.ReadLine();
			string holiday = Console.ReadLine();
			var Chrysanthemums = 0.0;
			var Roses = 0.0;
			var Tulips = 0.0;
			var OtstapkaTulips = 0.0;
			var OtstapkaRoses = 0.0;
			var OtstapkaTwenty = 0.0;
			if (season == "Spring" || season == "Summer")
			{

				Chrysanthemums = 2.00;
				Roses = 4.10;
				Tulips = 2.50;

				if (countTulips > 7)
				{
					OtstapkaTulips = 0.05;

				}
				else { OtstapkaTulips = 0.0; }
				if (season == "Autumn" || season == "Winter")
				{

					Chrysanthemums = 3.75;
					Roses = 4.50;
					Tulips = 4.15;
					if (countRoses >= 10)
					{
						OtstapkaRoses = 0.10;

					}
					else {
						OtstapkaRoses = 0.0;
					}



				}


			}
			if ((countRoses + countTulips + countChrysanthemums) > 20)
			{
				OtstapkaTwenty = 0.20;
			}
			else { OtstapkaTwenty = 0.0; }
			var holidayPrice = 0.0;
			if (holiday == "Y")
			{
				holidayPrice = 0.15;
			}
			if(holiday == "N") { holidayPrice = 0.0;}

			var totalPrice = ((countRoses * Roses) + (countTulips * Tulips) + (countChrysanthemums * Chrysanthemums));
			var otstapkaHoliday = totalPrice + (totalPrice * holidayPrice);
			var otstapka = otstapkaHoliday - (otstapkaHoliday * OtstapkaTulips) - (otstapkaHoliday * OtstapkaRoses) - (otstapkaHoliday * OtstapkaTwenty);
			Console.WriteLine("{0:f2}",otstapka + 2 );

		}
	}
}

Отново се опитвам да реша задачата на C# ама нещо не ми се получава нЗа да изчисли правилно. 

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