对于在 C# 中工作的循环

本文关键字:工作 循环 | 更新日期: 2023-09-27 17:57:00

我正在编写一个程序,可以在数组中查找 1 的数量......但是"for"循环中的"扫描"只发生一次。

for (i = 0; i < 11; i++ )
{
    k = Convert.ToInt32(Console.Read());
    if (k==1)
    {
        ans++;
    }
    //   Console.WriteLine("i == {0}", i);
}

这在 C# 中是正常的还是我做错了什么?我试图搜索这个问题,但找不到任何答案!

对于在 C# 中工作的循环

do

Console.ReadLine() 

而不是

Console.Read()

当您到达第一个 Console.Read() 时,输入流将被保存,但 Read 方法只返回第一个字符。对 Read 方法的后续调用从输入流中一次检索一个字符的输入。

前任:第一次迭代:

k = Console.Read(); //you input "abc1", k = a

第二次迭代:

k = Console.Read(); // k = b 

等等。当返回输入流中的最后一个字符时,下一次对 Console.Read() 的调用将再次显示控制台,以便您可以输入新字符串并按 Enter 键。

Console.Read() docu

实际上,您的代码中没有数组。就个人而言,我会将其重写为:

string input = Console.ReadLine();
for (i = 0; i < input.Length; i++ )
{
    int k = Convert.ToInt32(input.Substring(i, 1));
    if (k==1)
    {
        ans++;
    }
}

这允许用户先输入一个字符串,然后执行所有解析。当然,用户可能会在此代码中输入多于或少于 11 个字符,因此如果您确实需要 11 个数字,我会添加额外的消息和检查。

此外,如果用户输入非数字内容,此代码(作为原始代码)会惨败,因此异常处理也将在任务列表中。

尝试使用此代码,我认为它会回答您的问题

 string[] sample = { "1", "1", "3" };
        var a = (from w in sample
                 where w == "1"
                 select w).ToList();
        Console.Write(a.Count);