Console.Read没有返回我的int32

时间:2011-12-09 12:51:12

标签: c#

我不知道为什么我的整数没有正确输出,Console.Read()方法说它返回一个整数,为什么WriteLine没有正确显示它?

int dimension;
dimension = Console.Read();
Console.WriteLine(""+ dimension);

7 个答案:

答案 0 :(得分:6)

Console.Read()仅返回键入内容的第一个字符。您应该使用Console.ReadLine()

示例:

int suppliedInt;

Console.WriteLine("Please enter a number greater than zero");
Int32.TryParse(Console.ReadLine(), out suppliedInt);

if (suppliedInt > 0) {
    Console.WriteLine("You entered: " + suppliedInt);
}
else {
    Console.WriteLine("You entered an invalid number. Press any key to exit");
}

Console.ReadLine();

其他资源:

MSDN - Console.Read()

MSDN - Console.ReadLine()

答案 1 :(得分:0)

Console.Read方法只返回int中包含的单个字符,因此仅在您读取的数字只有一位数时才适用,否则您将始终只获取第一位数。

由于Read的返回值实际上是一个字符,因此不能直接将其用作整数,您需要将其从字符解析为整数。

但假设您想要一个长于一位数的数字,那么您确实需要使用Console.ReadLine,并使用int.TryParse将输入转换为整数。如果int.TryParse返回false,您可以警告用户他提供了无效的输入并再次询问维度。

示例代码:

int dimension;

bool isValidDimension;
do
{
    Console.Write("Dimension: ");

    string input = Console.ReadLine();

    isValidDimension = int.TryParse(input, out dimension);

    if (!isValidDimension)
    {
        Console.WriteLine("Invalid dimension... please try again.");
        Console.WriteLine();
    }
} while (!isValidDimension);

答案 2 :(得分:0)

From the MSDN

  

返回值

     

类型:System.Int32输入流中的下一个字符,或   如果当前没有更多字符,则为负一(-1)   读取。

答案 3 :(得分:0)

你应该按照以下方式

static void Main() 
{
    int Number;
    string strNumber;

    strNumber = Console.ReadLine();
    Number = int.Parse(strNumber);
    Console.WriteLine("" + dimension);
}

答案 4 :(得分:0)

你的程序正在返回,但你没有看到,请问下面的代码块:

如果输出窗口没有停留,您将无法看到输出。

int dimension;
dimension = Console.Read();
Console.WriteLine("" + dimension);
Console.ReadLine();

答案 5 :(得分:0)

Console.Read()返回输入中第一个符号的ASCII码。你可以做到

int dimension;
dimension = Console.Read();
Console.WriteLine(""+ (char)dimension);

并且您将在输入中看到正确的第一个符号,如

(char)dimension

将通过它的ASCII码给你符号。

答案 6 :(得分:0)

int a = 0;
if(Int32.TryParse(Console.ReadLine(), out a))
{
    // Do your calculations with 'a' 
}
else
{
    // Some warnings
}