P47 小练习

//要求用户输入一个数字
            //我们打印出这个数字的两倍
            //当用户输入end的时候,程序退出
            string num = "";
            Console.WriteLine("请输入数字");          
            while (num != "end")
            {
                num = Convert.ToDouble(Console.ReadLine());//error
                Console.WriteLine("您输入的数字二倍是{0}", num * 2);//error
            };

            //自己写的狗屎代码,本意声明一个变量num,
            //当用户输入数字时,程序进入while循环,将string转为double
            //当想end退出程序时,num就着string的字符串类型输入end,然后退出
            //应该是字符转换没学好。。。
string input = "";
            while (input != "end")
            {
                Console.WriteLine("请输入一个数字");
                input = Console.ReadLine();
                if (input != "end")
                {
                    try
                    { //try
                        double num = Convert.ToDouble(input);
                        Console.WriteLine("你输入的数字的两倍是{0}", num * 2);
                    }//try
                    catch
                    {//catch
                        Console.WriteLine("输入错误,请重新输入");
                    }//catch
                }
                else//假设输入end而不是其他七七八八
                {
                    Console.WriteLine("你输入了end,程序退出");
                }
                Console.ReadLine();
                //教训:一口吃不成大胖子,得声明两个变量
94 views
Comments
登录后评论
Sign In
·
while (true)
{
    Console.WriteLine("请输入一个数字");
    var input = Console.ReadLine();
    if (input != "end")
    {
        try
        {
            var num = Convert.ToDouble(input);
            Console.WriteLine("你输入的数字的两倍是 {0}", num * 2);
        }
        catch (System.FormatException e)
        {
            Console.WriteLine(e.Message);
        }
    }
    else
    {
        Console.WriteLine("你输入了end,程序退出");
        break;
    }
}

你最初的代码问题不是字符串转换没学好,是 num 类型为 stringnum = Convert.ToDouble(...)double 赋值给 num,类型不匹配,报错。

catch 语句后不加限定,表示捕获所有异常,尽量避免,使用更精确的异常类型。

知其然还得知其所以然啊,遇到错误的地方要搞清楚原因,不要模棱两可地理解 flushed