using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace lotto
{
class Program
{

    static void Main(string[] args)
    {
        char k = 'l';
        while (!(k == 'k'))
        {
            Random rnd = new Random();
            int[] tablica = new int[6];
            for (int i = 0; i < 6; i++)
            {

                    tablica[i] = 0;

            }
                for (int i = 0, z; i < 6; i++)
                {
                   {
                    z = rnd.Next(1, 49);
                    while (tablica.Contains(z))
                    {
                        z = rnd.Next(1, 49);
                    }
                    tablica[i] = z;
                }
            }
            Array.Sort(tablica);
            foreach (int q in tablica)
            {
                Console.Write(q);
                Console.Write(", ");
            }
            k = Convert.ToChar(Console.Read()) ;
            Console.WriteLine("\n\n\n");
        }
    }


    }
 }


一切正常。当我使用逐步单击(Visual Studio中为F10)时,它运行良好。但是当我正常运行它之后

k=Convert.ToChar(Console.Read());


当我提供“ k”时,程序将按预期停止。
当我什么都不做的时候

 foreach (int q in tablica)
        {
            Console.Write(q);
            Console.Write(", ");
        }
        k = Convert.ToChar(Console.Read()) ;
        Console.WriteLine("\n\n\n");


两次,当我提供除“ k”以外的任何东西时,它将执行三次。搞什么鬼。

最佳答案

Console.Read一次从输入流(doc)中读取一个字符。当您按Enter键时,您将提供两个字符:\r,然后是\n,因此在暂停供进一步的用户输入之前,需要阅读两个字符。

当您使用F10来查看正在循环的内容时,我感到困惑。我只是碰巧在提供“无”时使用Enter并看到了字符弹出。

08-17 11:57