Софтуерно Инженерство
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);
        }
    }
}


 

Тагове:
veronikaaa86 avatar veronikaaa86 363 Точки

Първото, което виждам е, че ако входната валута ти е 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 363 Точки

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

0
Angel_Kalinkov avatar Angel_Kalinkov 111 Точки

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

0
17/01/2018 15:29:22