C#Noob寻找小帮助:为什么这个迷你代码不起作用?

时间:2011-10-17 00:09:56

标签: c#

我在C#非常新,我只想在这里尝试一些代码。

但它没有用。我不明白为什么。我在Visual Studio上没有任何错误。 它只是不正常。我alwasy说“你写了一个更高的数字。”然后关闭。

你能帮助我吗?

你可以理解我想要做的事情。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int number = 4 ;

            Console.WriteLine("Hello");
            Console.WriteLine("Write a number from 1 to 10 : ");

            int x = Console.Read();

            if ( x < number )
                Console.WriteLine("You write a lower number.");
            else if ( x > number )
                Console.WriteLine("You write a higher number.");
            else
                Console.WriteLine("True");

            Console.Read();
        }
    }
}

3 个答案:

答案 0 :(得分:6)

只读读取下一个字符。

您想使用Console.ReadLine并使用int.Parseint.TryParse将字符串转换为整数。

int x = int.Parse(Console.ReadLine());

另外,我认为Read会从数字0-9开始工作。始终输出You write a higher number的原因是因为它比较character value而不是数值,因为Read返回字符的十进制表示。

如果必须使用Read,则必须从字符值中获取数值,如下所示:

int x = Console.Read();

int numericalX =  (int)char.GetNumericValue((char)x);

另外,和其他人一样,我建议在给定输入不是有效积分值的情况下使用int.TryParse而不是int.Parseint.TryParse返回一个布尔值,指示转换是否成功,并将转换后的整数值作为out参数输出。

答案 1 :(得分:2)

因为Console.Read()返回字符而不是数字。您可能需要ReadLine,然后拨打int.TryParse

答案 2 :(得分:0)

您应该做的第一件事是验证x的值。 Console.Read()会返回char值,该值可以隐式投放到int中。因此,如果您键入3,则x的值将为51。