Я работаю над конвертацией валюты на 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();
}
}
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
Я не уверен на 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");
}
}
}
Похожие вопросы
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.
int;
в первой строке. Отсутствующий операторswitch
перед(choice)
плюс весь набор других ошибок, о которых вам сообщит компилятор< /a> в окнах ошибок или вывода вашей любимой IDEdouble
для денежных сумм. Всегда используйтеdecimal
.