控制台.读取不返回我的int32

本文关键字:我的 int32 返回 读取 控制台 | 更新日期: 2023-09-27 18:17:25

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

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

控制台.读取不返回我的int32

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

来自MSDN:

返回值

类型:系统。Int32输入流的下一个字符,或-1(-1),如果目前没有更多的字符阅读。

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

如果输出窗口不保持,您将无法看到输出。

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

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

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

,你会看到输入中的第一个符号,如

(char)dimension

将以ASCII码显示符号

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

Console.Read方法只返回一个包裹在int中的单个字符,所以这只适用于你正在读取的数字只有一位长,否则你总是只得到第一个数字。

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

但是假设你想要一个大于一个数字的数字,那么你真的需要使用Console.ReadLine来代替,并使用int.TryParse将输入转换为整数。如果int.TryParse返回false,您可以警告用户他提供了无效的输入,并再次请求尺寸。

示例代码:

int维度;

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

你应该这样做

static void Main() 
{
    int Number;
    string strNumber;
    strNumber = Console.ReadLine();
    Number = int.Parse(strNumber);
    Console.WriteLine("" + dimension);
}