Foreach本身为双精度或三精度

本文关键字:精度 双精度 Foreach | 更新日期: 2023-09-27 18:18:55

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");
        }
    }

    }
 }

可以正常工作。当我使用一步一步的点击(F10在visual studio),它运行良好。但是当我正常运行它时,在

之后
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'以外的任何东西时,它会执行三次。What.The.Hell .

Foreach本身为双精度或三精度

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

我很困惑,当你使用F10来查看循环时,它是如何运行的,我只是碰巧使用输入当提供"nothing"时,看到字符弹出。

您是否尝试捕获来自Console.Read()的输入并查看它会给您带来什么?这可能与一个控制字符被读入有关,并且它不能正确地转换为字符。

除此之外,我建议重新格式化你的代码(你在第二个for循环中有多余的"{}")。另外,给变量起有意义的名字总是一个好习惯。I、j、k等没有内在意义。在将来重构和维护你的代码会更容易。

我没有仔细看你剩下的代码,但我猜有更短/更简单的方法来做很多事情。在一个方法中有这么多for/foreach/while循环有一种代码气味。

通过使用Console.Read(),您实际上得到了您的输入加上"'r'n",所以当您使用ENTER时,您只得到"'r'n"(2个字符),当您输入字符"m"时,您的输入是"m'r'n"(3个字符),这就是为什么有"一个"差异的原因。

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