Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
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 - Fatal编程技术网

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