我只是这个的初学者,我正在制作货币转换器,输入并验证整数,并输入和验证汇率。我在如何根据先前输入的两个验证值计算汇率方面遇到问题。这是我到目前为止所做的代码,这也是一个控制台应用程序。
static void Main(string[] args)
{
wholeNumber();
exhangeNumber();
}
private static void exhangeNumber()
{
double evalue;
bool valid;
Console.WriteLine("please enter an exchange rate");
do
{
try
{
evalue = double.Parse(Console.ReadLine());
Console.WriteLine("the exchange rate entered is: {0:F2}", evalue);
valid = true;
}
catch
{
Console.WriteLine("invalid Exchange rate please try again");
valid = false;
}
}
while (valid == false);
Console.ReadLine();
}
private static void wholeNumber()
{
int ivalue;
bool valid;
Console.WriteLine("please enter a whole number");
do
{
try
{
ivalue = int.Parse(Console.ReadLine());
Console.WriteLine("the valuse you have entered is : {0:F0}", ivalue);
valid = true;
}
catch
{
Console.WriteLine("this is not a whole number please try again");
valid = false;
}
} while (valid == false);
}
}
}
答案 0 :(得分:4)
您永远不会将值返回主程序
private static double exhangeNumber()
private static double wholeNumber()
在这些的底部,而不是分别使用控制台readline,return ivalue/evalue;
。然后在主要你可以做
Console.WriteLine(exchangeNumber() * wholeNumber());
Console.ReadLine();
正如史蒂夫在评论中所说,您可能希望使用TryParse
代替Parse
来获取值,因为它会为您提供额外的错误处理,如果您的用户输入不是,则会提供默认值这是一个有效数字,对于一个双倍,这是0.0
..除此之外,TryParse还将返回一个关于解析是否成功的布尔值
例如:
evalue = double.Parse(Console.ReadLine());
is the same as (but improved)
double.TryParse(Console.ReadLine(), out evalue);
更好
while(!double.TryParse(Console.ReadLine(), out evalue);
{
Console.WriteLine("this is not a whole number please try again");
}
Console.WriteLine("the valuse you have entered is : {0:F0}", evalue);