C# Console.Read()无法正常工作 inty=0; 控制台写入线(“插入x”); intx=Console.Read(); 控制台写入线(“插入n”); int n=Console.Read(); 控制台。写入线(“插入a”); int a=Console.Read(); 整数和=(2*n-1)*a; int sum2=(2*n*a); int sum3=(2*n+1)*a; 如果(x sum&&x sum2&&x
使用C# Console.Read()无法正常工作 inty=0; 控制台写入线(“插入x”); intx=Console.Read(); 控制台写入线(“插入n”); int n=Console.Read(); 控制台。写入线(“插入a”); int a=Console.Read(); 整数和=(2*n-1)*a; int sum2=(2*n*a); int sum3=(2*n+1)*a; 如果(x sum&&x sum2&&x,c#,insert,C#,Insert,使用Read而不是Read使用ReadLine。只有这样,您才能确保用户实际按下ENTER,并返回整行,Read阻塞,直到用户按下ENTER,但随后只返回一个字符的ASCII码你看了这个例子,就明白了 在您的示例中,如果输入“1”并按enter,则对Read的下一次调用实际上将返回1、\r和\n的ASCII码 需要明确的是:Read不会返回输入的数字,而是返回您输入的字符的ASCII码,因此您用错了-您需要做的是将用户输入的字符串转换为如下数字: int y = 0;
Read
而不是Read
使用ReadLine
。只有这样,您才能确保用户实际按下ENTER
,并返回整行,Read
阻塞,直到用户按下ENTER
,但随后只返回一个字符的ASCII码你看了这个例子,就明白了
在您的示例中,如果输入“1”并按enter
,则对Read
的下一次调用实际上将返回1
、\r
和\n
的ASCII码
需要明确的是:Read
不会返回输入的数字,而是返回您输入的字符的ASCII码,因此您用错了-您需要做的是将用户输入的字符串转换为如下数字:
int y = 0;
Console.WriteLine("insert x");
int x = Console.Read();
Console.WriteLine("insert n");
int n = Console.Read();
Console.WriteLine("insert a");
int a = Console.Read();
int sum = (2 * n - 1) * a;
int sum2 = (2 * n * a);
int sum3 = (2 * n + 1) * a;
if (x <= 0) y = 0;
else if (x > sum && x <= sum2) y = a;
else if (x > sum2 && x <= sum3 || n <= 3 || n >= 1) y = 0;
Console.WriteLine("Y = " + y);
Console.ReadLine();
}
您还可以像这样轻松地检查错误:
int number = Convert.ToInt32(Console.ReadLine());
只读取下一个字符。这不是您想要的。发生的情况是:
- 键入
=>读取7
x的字符(ascii码)
0x37
- 按ENTER=>读取
的n
(0x0A
) 等等\r
Console.ReadLine()
,当您点击ENTER键时,它将终止,并返回一个字符串,您可以将其解析为int
:
int number;
if (!Int32.TryParse(Console.ReadLine(), out number))
{
Console.WriteLine("What you entered is not a number!");
return;
}
如果用户键入“abc”而不是int
或使用
Console.Write("Insert x: ");
string input = Console.ReadLine();
int x = int.Parse(input);
您应该使用ReadLine并将其转换为int 32
这是正确的代码:
int x;
if (!int.TryParse(input, out x))
Console.WriteLine("This was no number!");
inty=0;
控制台写入线(“插入x”);
intx=Convert.ToInt32(Console.ReadLine());
控制台写入线(“插入n”);
int n=Convert.ToInt32(Console.ReadLine());
控制台。写入线(“插入a”);
int a=Convert.ToInt32(Console.ReadLine());
整数和=(2*n-1)*a;
int sum2=(2*n*a);
int sum3=(2*n+1)*a;
如果(x sum&&x sum2&&x每个人都给出了解决方案,但原因是什么
你的代码不工作是这样的
控制台,读
返回按键的ASCII值。
意思是说
int y = 0;
Console.WriteLine("insert x");
int x = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("insert n");
int n = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("insert a");
int a = Convert.ToInt32(Console.ReadLine());
int sum = (2 * n - 1) * a;
int sum2 = (2 * n * a);
int sum3 = (2 * n + 1) * a;
if (x <= 0) y = 0;
else if (x > sum && x <= sum2) y = a;
else if (x > sum2 && x <= sum3 || n <= 3 || n >= 1) y = 0;
Console.WriteLine("Y = " + y);
Console.ReadLine();
点击键盘上的4key将存储值53,这是变量i中4key的ASCII值,而不是我们预期的整数“4”
要完全理解这一点,请在控制台后使用断点检查变量值。阅读以查看变量a、n和y中真正存储的内容。当我使用ReadLine时,我会出现错误,因为我无法将类型“string”隐式转换为“int”是。当然可以,您也应该这样做。我将编辑我的答案。
int i = Console.Read();