Я работаю над конвертацией валюты на VS в С#, моя текущая задача заключается в том, как правильно конвертировать доллар в франк, евро в фунт стерлингов в франк, но когда я запускаю программирование, все работает нормально, пока я не введу сумму для конвертации в долларах это работает, и когда я пытаюсь использовать другие валюты, просто не показывает никакого результата или не вызывает никаких исключений. ниже моя программа, я пытался найти похожие задачи, но не смог найти подходящую для моего случая! Я очень новичок в языке и сообществе С#. Может быть, это не очень умный вопрос, но мне действительно нужна помощь!

class Program
    {
        public static void Main()
        {
            int ;
            double val,frank;
            Console.WriteLine("Enter your Choice :\n 1- Dollar to Frank \n 2- Euro to Frank \n 3- Sterling to Frank ");
            choice = int.Parse(Console.ReadLine());
 
             (choice)
            {
                case 1:
                    Double dollar;
                    Console.Write("Enter the Dollar Amount :");
                    dollar = Double.Parse(Console.ReadLine());
                    Console.Write("Enter the Dollar Value :");
                    val = double.Parse(Console.ReadLine());
                    frank = dollar * val;
                    Console.WriteLine("{0} Dollar Equals {1} Frank", dollar, frank);
                    break;
                case 2:
                    Double Euro;
                    Console.Write("Enter the Euro Amount :");
                    Euro  Double.Parse(Console.ReadLine());
                    Console.Write("Enter the Euro Value :");
                    val = double.Parse(Console.ReadLine());
                    frank = Euro * val;
                    Console.WriteLine("{0} Euro Equals {1} Frank", Euro, frank);
                    break;
                case 3:
                    Double sterling;
                    Console.Write("Enter the Sterling Amount :");
                    Double.Parse(Console.ReadLine());
                    Console.Write("Enter the Sterling Value :");
                    val = double.Parse(Console.ReadLine());
                    frank = sterling * val;
                    Console.WriteLine("{0} Sterling Equals {1} Frank", sterling, frank);
                    break;
            }
            Console.ReadLine();
        }
    }
 
0
Abu Godda 3 Фев 2022 в 11:32

2 ответа

Лучший ответ

Я бы попытался решить это более общим способом и с меньшим количеством повторений.

public static void Main()
{
    decimal EnterDecimal(string message, bool zero_allowed)
    {
        while (true)
        {
            Console.WriteLine(message);
            if (decimal.TryParse(Console.ReadLine(), out decimal value))
                if (zero_allowed || value != 0m)
                    return value;
        }
    }

    string EnterCurrency(string message)
    {
        while (true)
        {
            Console.WriteLine(message);
            string currency = Console.ReadLine().ToUpperInvariant();
            if (currency.Length == 3)
                return currency;
        }
    }

    string currency_from = EnterCurrency("Enter From Currency");
    string currency_to = EnterCurrency("Enter To Currency");
    decimal rate = EnterDecimal($"Enter exchange rate from {currency_from} to {currency_to}", false);
    decimal amount_from = EnterDecimal($"Enter the amount of {currency_from} to convert", true);
    decimal amount_to = amount_from * rate;
    Console.WriteLine($"{amount_from} {currency_from} equals {amount_to} {currency_to}");
}

Типичный запуск этого кода может быть:

Enter From Currency
AUD
Enter To Currency
USD
Enter exchange rate from AUD to USD
0.7
Enter the amount of AUD to convert
100
100 AUD equals 70.0 USD
1
Enigmativity 3 Фев 2022 в 12:05

Я не уверен на 100%, что это то, о чем вы просили, но приведенный ниже код будет работать для любого из 3 выбранных. Я попытался сделать его максимально простым и максимально похожим на ваш код.

internal class Promena
    {
        public static void Main()
        {
            decimal val, frank;
            Console.WriteLine("Enter your choice :\n 1- Dollar to Frank \n 2- Euro to Frank \n 3- Sterling to Frank");

            int choice = int.Parse(Console.ReadLine());

            if(choice == 1 )
            {
                decimal dollar;
                Console.WriteLine("Enter the Dollar amount : ");
                dollar = int.Parse(Console.ReadLine());
                Console.WriteLine("Enter the Dollar value:");
                val = decimal.Parse(Console.ReadLine());
                frank = dollar * val;
                Console.WriteLine("Amount of "+dollar+" Dollars = " + frank + " Franks");
            }
            else if(choice == 2 )
            {
                decimal euro;
                Console.WriteLine("Enter the Euro amount : ");
                euro = int.Parse(Console.ReadLine());
                Console.WriteLine("Enter the Dollar value:");
                val = decimal.Parse(Console.ReadLine());
                frank = euro * val;
                Console.WriteLine("Amount of " + euro + " Euros = " + frank + " Franks");
            }
            else if(choice == 3 )
            {
                decimal sterling;
                Console.WriteLine("Enter the Sterling amount : ");
                sterling = int.Parse(Console.ReadLine());
                Console.WriteLine("Enter the Dollar value:");
                val = decimal.Parse(Console.ReadLine());
                frank = sterling * val;
                Console.WriteLine("Amount of " + sterling + " Euros = " + frank + " Franks");
            }
        }
    }
-1
aca 3 Фев 2022 в 13:21
1
Ваш ответ может быть улучшен с помощью дополнительной вспомогательной информации. Пожалуйста, отредактируйте, чтобы добавить дополнительные сведения, такие как цитаты или документация, чтобы другие могли подтвердить правильность вашего ответа. Дополнительную информацию о том, как писать хорошие ответы, можно найти в справочном центре.
 – 
Community
3 Фев 2022 в 13:18