控制台.读取不返回我的int32
本文关键字:我的 int32 返回 读取 控制台 | 更新日期: 2023-09-27 18:17:25
我不明白为什么我的整数不能正确输出,Console.Read()方法说它返回一个整数,为什么WriteLine不能正确显示它?
int dimension;
dimension = Console.Read();
Console.WriteLine(""+ dimension);
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);
}