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();
}
无法插入所有值。在我插入x y打印和控制台关闭后,我的错误是什么?
答案 0 :(得分:2)
而不是Read
使用ReadLine
。只有这样,您才可以确保用户实际按下ENTER
并返回整行 - Read
阻止,直到用户按下ENTER
,然后返回ASCII只有一个字符的代码。如果您阅读documentation示例,则会变得清晰。
在您的示例中,如果您输入&#34; 1&#34;然后按ENTER
,下次拨打Read
将实际返回1
,\r
和\n
的ASCII代码。
要明确:Read
不会返回输入的号码,但会输入您输入的字符的 ASCII码,所以你错误地使用它 - 你需要做的是将用户输入的字符串转换为如此数字:
int number = Convert.ToInt32(Console.ReadLine());
你也可以像这样容易地检查错误:
int number;
if (!Int32.TryParse(Console.ReadLine(), out number))
{
Console.WriteLine("What you entered is not a number!");
return;
}
答案 1 :(得分:1)
Console.Read
仅读取下一个字符。这不是你想要的。会发生什么:
7
=&gt;你读了0x37
x
0x0A
阅读了\r
(n
)
等... 您希望使用Console.ReadLine()
,当您点击 ENTER 时会终止,并返回string
,您可以将其解析为int
:
Console.Write("Insert x: ");
string input = Console.ReadLine();
int x = int.Parse(input);
如果用户键入&#34; abc&#34;您可能希望添加错误处理。而不是int
或使用
int x;
if (!int.TryParse(input, out x))
Console.WriteLine("This was no number!");
答案 2 :(得分:0)
您应该使用ReadLine并转换为int 32
这是正确的代码:
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();
答案 3 :(得分:0)
每个人都给出了解决方案但其原因 你的代码不起作用就是这个。
在 Console.Read
返回keypressed的ASCII值。 这意味着说出像
这样的东西int i = Console.Read();
点击键盘上的4键将存储值53,这是变量i中4键的ASCII值,而不是你想要的整数“4”。
通过在Console.Read之后使用断点来完全理解这个检查变量值,以查看变量a,n和y中真正存储的内容。