[英]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 迭代:
此外,我使用與結果列表長度相同的數組管理 resultsG,因此我也可以遍歷該數組以打印結果。
如前所述,循環中的“i”可以在循環內部進行操作,因此您可以使用
for(int i = 0; i < 6;i++)
{
...
'i' can be manipulated as whatever
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.