我一直在用 c# 在 VS 上進行貨幣轉換,我目前的挑戰是如何正確地將美元轉換為弗蘭克,將歐元轉換為英鎊到弗蘭克,但是當我運行程式時,一切似乎都正常,直到我輸入要轉換的金額在美元中它有效,當我嘗試使用其他貨幣時,它沒有顯示任何結果或引發任何例外。以下是我的程式,我嘗試尋找類似的挑戰,但找不到適合我的情況!我對 C# 語言和社區非常陌生,也許這可能不是一個非常聰明的問題,但我確實需要幫助!
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();
}
}
uj5u.com熱心網友回復:
我會嘗試以更通用的方式和更少的重復來解決這個問題。
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
uj5u.com熱心網友回復:
我不能 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");
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/426119.html
