1
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”以外的任何内容时,它会执行三次。搞什么鬼。

4

3 回答 3

6

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

我很困惑当你使用 F10 时它是如何运行良好的,因为我这样做是为了查看循环中的内容,我只是Enter在提供“无”时碰巧使用并看到角色弹出。

于 2013-06-17T13:29:47.473 回答
1

您是否尝试从 Console.Read() 捕获输入并查看它给了您什么?这可能与正在读入的控制字符有关,并且无法正确转换为 char。

另外,完全不谈,我建议您重新格式化您的代码(在第二个 for 循环中有多余的“{}”)。此外,为变量赋予有意义的名称始终是一种好习惯。i、j、k 等没有内在意义。将来重构/维护代码会更容易。

我没有仔细查看您的其余代码,但我猜有更短/更简单的方法可以完成很多工作。一种方法中有这么多 for/foreach/while 循环有代码味道。

于 2013-06-17T13:35:04.940 回答
1

通过使用Console.Read(),你实际上得到了你的输入"\r\n",所以当你使用 ENTER 时,你只会得到"\r\n"(2个字符),当你输入一个字符“m”时,你的输入是“m\r\n”(3个字符),这就是之所以有“一”的区别。

此外,为什么要使用int i = 0, z;?这里, z没有任何意义,因为这是 C++ 用法。

于 2013-06-17T14:27:47.223 回答