[英]C# How to change list index value in do while loop
Using C# I wish to check the results of six games against a players prediction for the same six games.使用 C# 我希望对照相同六场比赛的玩家预测来检查六场比赛的结果。 The results and players predictions are captured using lists and a do-while loop.使用列表和 do-while 循环捕获结果和玩家预测。
The result for each game is then checked to see if it was a Home Win, Away Win or Draw.然后检查每场比赛的结果,看是主队赢、客队赢还是平局。 Currently, this is written out 6 times, as I cannot work out how to change the List index value in a do-while loop.目前,这被写了 6 次,因为我无法弄清楚如何在 do-while 循环中更改 List 索引值。
How can the result checker be shortened?如何缩短结果检查器?
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();
How would it be possible to run through the if statements to check;怎么可能通过 if 语句来检查; Results[0] against Results[1], then check Results[2] against [3], etc, with one do while loop?结果 [0] 对照结果 [1],然后检查结果 [2] 对照 [3] 等等,一个 do while 循环?
How about by using list index i
which starts at 0 and increases by 1 each execution, and then checking Results[i*2]
vs Results[i*2+1]
?如何使用从 0 开始并每次执行增加 1 的列表索引i
,然后检查Results[i*2]
vs Results[i*2+1]
怎么样? This approach would let you use a for
loop, where i
is the number of results you want to check.这种方法可以让您使用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";
}
}
This is what I did这就是我所做的
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();
To iterate through the list with results, I used the formula "i*2" and "(i*2) + 1" to get the first and second result of each game, respectively.为了用结果遍历列表,我使用公式“i*2”和“(i*2) + 1”分别得到每个游戏的第一个和第二个结果。 So, you'll get in a for iteration of 6 steps:因此,您将获得 6 个步骤的 for 迭代:
Also, I managed the resultsG with an array the same length of the List of results, so I can iterate through this array to print the results too.此外,我使用与结果列表长度相同的数组管理 resultsG,因此我也可以遍历该数组以打印结果。
As said before, the 'i' in the loop can be manipulated inside the loop, so you can use如前所述,循环中的“i”可以在循环内部进行操作,因此您可以使用
for(int i = 0; i < 6;i++)
{
...
'i' can be manipulated as whatever
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.