输入格式不正确

时间:2014-01-26 04:04:59

标签: c# libreadline

我想从C#中的控制台应用程序中读取一个double值和一个整数值。 `

            int ch = Console.Read();
            Console.WriteLine("Enter a random integer");
            int x = int.Parse(Console.ReadLine());



           switch (ch)
            {
                case 1:

                    TempServiceRef.Service1Client s1 = new ConsoleTempApplication.TempServiceRef.Service1Client();
                    Console.WriteLine("Enter temperature");
                    string n = Console.ReadLine();
                    int param = int.Parse(n);
                    double result = s1.c2f(param);
                    Console.WriteLine(result);
                    Console.ReadLine();
                    break;

                case 2:

                    TempServiceRef.Service1Client s2 = new ConsoleTempApplication.TempServiceRef.Service1Client();
                    Console.WriteLine("Enter temperature");
                    int param1 = int.Parse(Console.ReadLine());
                    double result1 = s2.f2c(param1);
                    Console.WriteLine(result1);
                    Console.ReadLine();
                    break;

                default:
                    Environment.Exit(0);
                    break;
            }
            ` 

一旦我尝试输入ch的值,控制台应用程序就会关闭。有时它在给出温度值后会关闭。我尝试使用tryParse和Convert.toInt。但我没有得到任何结果。谁可以帮我这个?进一步......我只是希望用户只输入整数值(作为假设)。在这种情况下,tryparse用法不是强制性的吗?

1 个答案:

答案 0 :(得分:0)

问题1:您正在使用Console.Read()方法从控制台读取单个字符。但是,您需要按Enter key返回输入的值/字符当您使用Console.Read()方法时,按Enter#{1}}方法将获得值空字符串,int.Parse()将抛出空字符串上的异常。

解决方案1:您需要在Console.ReadLine()方法之后添加Console.ReadLine()来读取第一个字符。然后你就可以继续了。

试试这个:

Console.Read()

问题2:您可以尝试将从控制台输入的字符直接与数字进行比较,这些数字不起作用,因为当您从控制台读取字符时,它将存储其ASCII值而非直接整数。例如如果从控制台输入 int ch =Console.Read(); Console.ReadLine(); //add this statement Console.WriteLine("Enter a random integer"); int x = int.Parse(Console.ReadLine()); ,它将以1存储在整数变量49中(ACII代码1为49),因此当您与1进行比较时,它不匹配。

解决方案2:,因此您需要匹配其字符值。所以将值括在单引号内以匹配在控制台中输入的确切值。

试试这个:将1和2括在单引号

ch

完整代码:

            switch (ch)
            {
                case '1':  
                 ---
                 break;
                case '2':
                 -----
                 break;
            }