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

[Homework] [Programming Basics with JAVA] Задача 13. Конзолен междувалутен конвертор

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

https://pastebin.com/zgRdtmXs

 

Jeliozver avatar Jeliozver 356 Точки
Best Answer

За да си спестиш проверките. Първо правиш 3, за да провериш дали входната валута е usd, eur, gpb и ако е една от тях ги превръшаш в левове. (inputSum *= usd....) После правиш същите 3 проверки, но вече за изходна валута и ги правиш от левове в желатана валута. (InputSum /= usd....)

И накрая извън всякакви проверки принтираш сумата със закръгляне беше до колкото помня.

 

0
09/07/2017 07:52:50
LenHristova avatar LenHristova 2 Точки

Аз го направих така:    https://pastebin.com/216RV9zU

0
milenmihalkov avatar milenmihalkov 2 Точки

Според мен по-правилно е да имаш стойностите ( Валутен курс ) дефинирани само на 1 място, а надолу да работиш само с имената на променливите, защото така както си го направила, ако имаш повече валути и куса се сменя ще трябва да сменяш стойностите на много места. :) 

0
LenHristova avatar LenHristova 2 Точки

Всъщност, ако курсът се сменя, ще трябва да се променят стойностите само на две места, не са много. В конкретния случай мисля, че не е чак такъв проблем, но си прав, че е добре да се изведат стойностите на едно място, най-малкото за по-добра прегледност и четимост на кода :)

0
vdjalov avatar vdjalov 13 Точки

Или нещо такова:

import java.util.Scanner;

public class currencyConverter1 {

    public static void main(String[] args) {
        
        
        Scanner scanner = new Scanner(System.in);
        
            double amount = Double.parseDouble(scanner.nextLine());
            int inputCurrency = Integer.parseInt(scanner.nextLine());
            int outputCurrency = Integer.parseInt(scanner.nextLine());
            
            double BGN = 1;
            double USD = 1.79549;
            double EUR = 1.95583;
            double GBP = 2.53405;
            
            
            double rateInput = 0;
            double rateOutput = 0;
            
            switch(inputCurrency){
            case 1:
                rateInput = BGN;
                break;
            case 2:
                rateInput = USD;
                break;
            case 3:    
                rateInput = EUR;
                break;
            case 4: 
                rateInput = GBP;
                break;
            }
            
            
            switch(outputCurrency){
            case 1:
                rateOutput = BGN;
                break;
            case 2:
                rateOutput = USD;
                break;
            case 3:
                rateOutput = EUR;
                break;
            case 4:    
                rateOutput = GBP;
                break;
            }
            
                System.out.printf("%.2f",(amount*rateInput)/rateOutput);
    }

}
 

0
vnazlamov avatar vnazlamov 1 Точки

Здравейте,

След като видях във фейсбук групата, че дават съвет относно тази задача да се реши с hashMap, се разрових и я направих по този начин. Споделям решението, като не твърдя че е най-правилното, но работи :) Ето и PasteBin: https://pastebin.com/qbUdGKke

 

0
st.penchev avatar st.penchev 3 Точки

Ето и моето простичко решение:

import java.util.Scanner;

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

        double sum1 = Double.parseDouble(scanner.nextLine());
        String CurrencyFrom = scanner.nextLine();
        String CurrencyTo = scanner.nextLine();

        double sumLV=1;

        if (CurrencyFrom.equals("USD")){
            sumLV = sum1*1.79549;
        }
        else{
            if (CurrencyFrom.equals("EUR")){
                sumLV = sum1*1.95583;
            }
            else {
                if (CurrencyFrom.equals("GBP")){
                    sumLV = sum1*2.53405;
                }
                else{
                    if (CurrencyFrom.equals("BGN")){

                        sumLV = sum1;
                    }

                }
            }
        }

        double sum2=1;

        if (CurrencyTo.equals("USD")){
            sum2 = sumLV/1.79549;
        }
        else{
            if (CurrencyTo.equals("EUR")){
                sum2 = sumLV/1.95583;
            }
            else {
                if (CurrencyTo.equals("GBP")){
                    sum2 = sumLV/2.53405;
                }
                else{
                    if (CurrencyTo.equals("BGN")){

                        sum2 = sumLV;
                    }

                }
            }
        }


        //System.out.println("Входна сума: " + sum1);
        //System.out.println("Валута от: " + CurrencyFrom);
        //System.out.println("Валута към: " +CurrencyTo);
        //System.out.println("Междинна сума в лева :" + sumLV);
        //System.out.println("Крайна сума :" + sum2);
        //System.out.printf("%.2f %s се равняват на %.2f %s", sum1, CurrencyFrom, sum2, CurrencyTo);

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


    }

}
 

0
DimitarBV avatar DimitarBV 0 Точки

  https://pastebin.com/ZtZqHCnZ

0