2

我只是一个初学者,我正在制作一个货币转换器,输入并验证整数,输入并验证汇率。我在如何根据之前输入的两个验证值计算汇率时遇到问题。这是我到目前为止所做的代码,这也是一个控制台应用程序。

    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);

    }
}

}

4

1 回答 1

4

您永远不会将值返回到主程序

private static double exhangeNumber()
private static double wholeNumber()

在这些的底部,return ivalue/evalue;分别使用控制台而不是 readline 使用。然后主要你可以做

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);
于 2013-08-27T22:19:57.523 回答