簡體   English   中英

C# 如何在 do while 循環中更改列表索引值

[英]C# How to change list index value in do while loop

使用 C# 我希望對照相同六場比賽的玩家預測來檢查六場比賽的結果。 使用列表和 do-while 循環捕獲結果和玩家預測。

然后檢查每場比賽的結果,看是主隊贏、客隊贏還是平局。 目前,這被寫了 6 次,因為我無法弄清楚如何在 do-while 循環中更改 List 索引值。

如何縮短結果檢查器?

        string ResultsG1, ResultsG2, ResultsG3, ResultsG4, ResultsG5, ResultsG6;

        int resultsGameWeek = 1;
        List<int> Results = new List<int>();
        do
        {
            Console.Write("RG" + resultsGameWeek + "H: ");
            Results.Add(Convert.ToInt32(Console.ReadLine()));

            Console.Write("RG" + resultsGameWeek + "A: ");
            Results.Add(Convert.ToInt32(Console.ReadLine()));

            resultsGameWeek++;
        } while (resultsGameWeek <= 6);



        // RESULTS CHECKER (HW/AW/D?)
        // Result.Game 1
        if (Results[0] > Results[1])
        {
            Console.WriteLine("HW");
            ResultsG1 = "HW";
        }
        else if (Results[0] < Results[1])
        {
            Console.WriteLine("AW");
            ResultsG1 = "AW";
        }
        else
        {
            Console.WriteLine("D");
            ResultsG1 = "D";

        }

        // Result.Game2
        if (Results[2] > Results[3])
        {
            Console.WriteLine("HW");
            ResultsG2 = "HW";
        }
        else if (Results[2] < Results[3])
        {
            Console.WriteLine("AW");
            ResultsG2 = "AW";
        }
        else
        {
            Console.WriteLine("D");
            ResultsG2 = "D";

        }

        // Result.Game3
        if (Results[4] > Results[5])
        {
            Console.WriteLine("HW");
            ResultsG3 = "HW";
        }
        else if (Results[4] < Results[5])
        {
            Console.WriteLine("AW");
            ResultsG3 = "AW";
        }
        else
        {
            Console.WriteLine("D");
            ResultsG3 = "D";

        }

        // Result.Game4
        if (Results[6] > Results[7])
        {
            Console.WriteLine("HW");
            ResultsG4 = "HW";
        }
        else if (Results[6] < Results[7])
        {
            Console.WriteLine("AW");
            ResultsG4 = "AW";
        }
        else
        {
            Console.WriteLine("D");
            ResultsG4 = "D";

        }

        // Result.Game5
        if (Results[8] > Results[9])
        {
            Console.WriteLine("HW");
            ResultsG5 = "HW";
        }
        else if (Results[8] < Results[9])
        {
            Console.WriteLine("AW");
            ResultsG5 = "AW";
        }
        else
        {
            Console.WriteLine("D");
            ResultsG5 = "D";

        }

        // Result.Game6
        if (Results[10] > Results[11])
        {
            Console.WriteLine("HW");
            ResultsG6 = "HW";
        }
        else if (Results[10] < Results[11])
        {
            Console.WriteLine("AW");
            ResultsG6 = "AW";
        }
        else
        {
            Console.WriteLine("D");
            ResultsG6 = "D";

        }

        Console.WriteLine("ResultsG1 = " + ResultsG1);
        Console.WriteLine("ResultsG2 = " + ResultsG2);
        Console.WriteLine("ResultsG3 = " + ResultsG3);
        Console.WriteLine("ResultsG4 = " + ResultsG4);
        Console.WriteLine("ResultsG5 = " + ResultsG5);
        Console.WriteLine("ResultsG6 = " + ResultsG6);
        Console.ReadLine();

怎么可能通過 if 語句來檢查; 結果 [0] 對照結果 [1],然后檢查結果 [2] 對照 [3] 等等,一個 do while 循環?

如何使用從 0 開始並每次執行增加 1 的列表索引i ,然后檢查Results[i*2] vs Results[i*2+1]怎么樣? 這種方法可以讓您使用for循環,其中i是您要檢查的結果數。

for(int i=0; i<game_count; i++) {
  if (Results[i*2] > Results[i*2+1])
    {
      Console.WriteLine("HW");
      ResultsG1 = "HW";
    }
    else if (Results[i*2] < Results[i*2+1])
    {
      Console.WriteLine("AW");
      ResultsG1 = "AW";
    }
    else
    {
      Console.WriteLine("D");
      ResultsG1 = "D";
    }
}

這就是我所做的

            int games = 6;

            string[] results_per_game = new string[games];

            int resultsGameWeek = 1;
            List<int> Results = new List<int>();
            do
            {
                Console.Write("RG" + resultsGameWeek + "H: ");
                Results.Add(Convert.ToInt32(Console.ReadLine()));

                Console.Write("RG" + resultsGameWeek + "A: ");
                Results.Add(Convert.ToInt32(Console.ReadLine()));

                resultsGameWeek++;
            } while (resultsGameWeek <= games);

            int result1 = 0;
            int result2 = 0;
            for (int i = 0; i < games; i++)
            {
                result1 = Results[i * 2];
                result2 = Results[(i * 2) + 1];
                if (result1 > result2)
                {
                    Console.WriteLine("HW");
                    results_per_game[i] = "HW";
                }
                else if (result1 < result2)
                {
                    Console.WriteLine("AW");
                    results_per_game[i] = "AW";
                }
                else
                {
                    Console.WriteLine("D");
                    results_per_game[i] = "D";
                }
            }

            for (int i = 0; i < results_per_game.Length; i++)
            {
                int nextResultGame = i + 1;
                Console.WriteLine("ResultsG" + nextResultGame + " = " + results_per_game[i]);
            }
            Console.ReadLine(); 

為了用結果遍歷列表,我使用公式“i*2”和“(i*2) + 1”分別得到每個游戲的第一個和第二個結果。 因此,您將獲得 6 個步驟的 for 迭代:

  1. i = 0,位置1 = i*2 = 0,位置2 = (i*2) + 1 = 1。
  2. i = 1,位置1 = i*2 = 2,位置2 = (i*2) + 1 = 3。
  3. i = 2,位置1 = i*2 = 4,位置2 = (i*2) + 1 = 5。
  4. i = 3,位置 1 = i*2 = 6,位置 2 = (i*2) + 1 = 7。
  5. i = 4,位置 1 = i*2 = 8,位置 2 = (i*2) + 1 = 9。
  6. i = 5,位置1 = i*2 = 10,位置2 = (i*2) + 1 = 11。

此外,我使用與結果列表長度相同的數組管理 resultsG,因此我也可以遍歷該數組以打印結果。

如前所述,循環中的“i”可以在循環內部進行操作,因此您可以使用

for(int i = 0; i < 6;i++)
{
    ...
    'i' can be manipulated as whatever
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM