Loading...
goshkots avatar goshkots 0 Точки

Задача CurrencyConverter

Къде ми е проблема?

package SimpleCalculations;


import java.util.Scanner;

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

        Scanner scan = new Scanner(System.in);
        double price1 = Double.valueOf(scan.nextLine());
        double arg = 1.79549;
        double arg2 = 1.95583;
        double arg3 = 2.53405;
        String name1 = scan.nextLine();
        String name2 = scan.nextLine();
        name1.equals("USD");
        name1.equals("EUR");
        name1.equals("BGN");
        name1.equals("GBP");
        name2.equals("EUR");

        if (name1.equals("USD")) {
            //USD to BGN   20 = 35.91
            System.out.printf("%.2f", price1 * arg);
        } else if (name1.equals("BGN")) {
            //BGN to EUR   100 = 51.13
            System.out.printf("%.2f", price1 / arg2);
        } else if (name1.equals("EUR")) {
            //EUR to GBP   12.35 = 9.53
            System.out.printf("%.2f", (price1 * arg2) / arg3);
        } else if (name1.equals("USD") && name2.equals("EUR")) {
            //USD to EUR   150.35 = 138.02
            System.out.printf("%.2f", (price1 * arg) / arg2);
        } else if (name1.equals("GBP")) {
            //GBP to USD   12.35 = 17.43
            System.out.printf("%.2f", (price1 * arg3) / arg);
        }
    }
}


 

Тагове:
0
Programming Basics
veronikaaa86 avatar veronikaaa86 365 Точки

Първото, което виждам е, че ако входната валута ти е USD, влиза в две проверки и умножава 2 пъти, за това и резултата е по-голям. Освен това на входа се изисква да се изпише стойността и изходната валута, която се пази в променливата, с която четем желаната крайна валута от конзолата, в твоя случай - "name2". Например - "35.91 BGN"

Тези редове за какаво са ти?:

        name1.equals("USD");
        name1.equals("EUR");
        name1.equals("BGN");
        name1.equals("GBP");
        name2.equals("EUR");

Едно хубаво решение е да направиш 2 if - else if конструкции, като в първата приравниш всички валути към левове чрез умножение, а във втората да ги обърнеш в съответната валута, в която трябва да са, чрез делението.

Примерен код:

https://pastebin.com/rwptX7gZ

1
Angel_Kalinkov avatar Angel_Kalinkov 111 Точки

След като декларираш като стринг входната и съответно изходната валута, няма нужда след това наново да ги инициализираш - това става през скенера, след като се въведат данните в конзолата. В условната конструкция трябва да се обхождат всички възможни варианти за входна и изходна валута. Ето едно решение като подсказка:

https://pastebin.com/7B3LhxZ6

1
22/01/2018 10:06:10
veronikaaa86 avatar veronikaaa86 365 Точки

Не виждам да ги е инициализирал наново...къде е това в кода? Прочел си ги е със скенера. По-скоро ги е сравнил извън конструкцията, което е излишно :)

0
Angel_Kalinkov avatar Angel_Kalinkov 111 Точки

Това имах предвид, но не съм се изразил правилно blush

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