如何使用Console.Write写数字组?

时间:2012-03-01 20:54:55

标签: c# arraylist

我是C#的新手(和Stack Overflow,请原谅我这里任何可怜的礼仪),而我正在控制台应用程序中编写游戏Mastermind。我试图在游戏结束时显示用户猜测的列表,我知道使用Console.WriteLine();只会给我三十多行数字,不会告诉用户任何东西。

如何更改我的代码,以便程序一次显示一组中的4个数字?例如:

1234

1234

1234

//Store numbers in a history list
ArrayList guesses = new ArrayList(); //This is the ArrayList

Console.WriteLine("Please enter your first guess.");
guess1 = Convert.ToInt32(Console.ReadLine());
guesses.Add(guess1);

foreach (int i in guesses)
{
    Console.Write(i);
}

4 个答案:

答案 0 :(得分:2)

我假设你的字节数组的每个元素都是一个数字(0-9)。如果该假设无效 - 请告诉我,我将修改代码:)

Action<IEnumerable<int>> dump = null;

dump = items =>
            {
                if(items.Any())
                {
                  var head = String.Join("", items.Take(4));
                  Console.WriteLine(head);
                  var tail = items.Skip(4);
                  dump(tail);
                }
            };

dump(guesses);

答案 1 :(得分:0)

看起来你大部分都在那里,你有一个控制台写入,写出所有没有换行符。接下来添加一个整数count并将其设置为零。在foreach循环中将其递增1。 count % 4 == 0对于所有四位数的计数都适用。这意味着你可以在那里用一个写行来粘贴if块,为你提供四个组。

答案 2 :(得分:0)

这是我很快就把它放在一起的东西:

<强>更新

ArrayList guesses = new ArrayList(); //This is the ArrayList
    // Four or more
    guesses.Add(1); guesses.Add(2);
    guesses.Add(3);guesses.Add(4);
    guesses.Add(5); guesses.Add(6); guesses.Add(7);guesses.Add(8); guesses.Add(9);
    //Uncomment-Me for less than four inputs
    //guesses.Add(1); guesses.Add(2);
    int position = 0;
    if (guesses.Count < 4)
    {
        for (int y = 0; y < guesses.Count; y++)
        {
            Console.Out.Write(guesses[y]);
        }
    }
    else
    {
        for (int i = 1; i <= guesses.Count; i++)
        {
            if (i%4 == 0)
            {
                Console.Out.WriteLine(string.Format("{0}{1}{2}{3}", guesses[i - 4], guesses[i - 3],
                                                    guesses[i - 2], guesses[i - 1]));
                position = i;
            }
            else
            {
                if (i == guesses.Count)
                {
                    for (int j = position; j < i; j++)
                    {
                        Console.Out.Write(guesses[j]);
                    }
                }
            }
        }

    }

答案 3 :(得分:0)

List<int> endResult = new List<int>();
StringBuilder tempSb = new StringBuilder();
for(int i=0; i < groups.Count; i++)
{
    if(i % 4 == 0) {
        endResult.Add(int.Parse(sb.ToString()));
        tempSb.Clear(); // remove what was already added
    }
    tempSb.Append(group[i]);
}
// check to make sure there aren't any stragglers left in
// the StringBuilder. Would happen if the count of groups is not a multiple of 4
if(groups.Count % 4 != 0) {
    groups.Add(int.Parse(sb.ToString()));
}

这将为您提供4位数的整数列表,如果您的小组列表中的整数数量不是4的倍数,请确保您不会丢失任何内容。请注意,我将继续根据您提供的内容,所以groups是整数的ArrayList。