程序忽略了第一条语句
问题描述:
我写了一个程序,要求一个人输入一个团队号码(假设0,1或2)以及团队为特定游戏获得多少个目标。我有两个问题。首先,试图判断是否平局的if语句完全被忽略,其次,第二队总是以平局中最低,中等和最高的球队得分。 我非常新的C#,请回答一个新手:程序忽略了第一条语句
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
public static void updateScores(int x, int myTeam1, int myGoal1, int myTeam2, int myGoal2, int[,] values)
{
values[myTeam1, x] = myGoal1;
values[myTeam2, x] = myGoal2;
}
static void Main(string[] args)
{
//declare variables and integer array
//the different locations are set by default to 0
int highest;
int middle;
int lowest;
int counter = 0;
int x;
int y;
int z;
int team1;
int team2;
int goals1;
int goals2;
int[,] teamsGoalArray = new int[3, 4];
//get information about teams playing and goals scored
while (counter <= 2)
{
Console.WriteLine("Please enter the first team playing in the {0} game", counter+1);
team1 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Please enter the number of goals for the team playing in the {0} game", counter +1);
goals1 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Please enter the second team playing in the {0} game", counter+1);
team2 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Please enter the number of goals for the team playing in the {0} game", counter +1);
goals2 = Convert.ToInt32(Console.ReadLine());
updateScores(counter, team1, goals1, team2, goals2, teamsGoalArray);
++counter;
}
int a = teamsGoalArray[0, 1] + teamsGoalArray[0, 2] + teamsGoalArray[0, 3];
int b = teamsGoalArray[1, 1] + teamsGoalArray[1, 2] + teamsGoalArray[1, 3];
int c = teamsGoalArray[2, 1] + teamsGoalArray[2, 2] + teamsGoalArray[2, 3];
if (a == b && a == c && b == c)
{
Console.WriteLine("All three teams had a total of {0} goals", a);
}
if (a >= b && a >= c)
{
highest = a;
x = 0;
}
else
if (b >= a && b >= c)
{
highest = b;
x = 1;
}
else
{
highest = c;
x = 2;
}
Console.WriteLine("Team {0} had the highest score with {1} goals", x, highest);
if (a < b && a > c || a > b && a < c)
{
middle = a;
y = 0;
}
else
if (b < a && b > c || b > a && b < c)
{
middle = b;
y = 1;
}
else
{
middle = c;
y = 2;
}
Console.WriteLine("Team {0} had the middle score with {1} goals", y, middle);
if (a < b && a < c)
{
lowest = a;
z = 0;
}
else
if (b < a && b < c)
{
lowest = b;
z = 1;
}
else
{
lowest = c;
z = 2;
}
Console.WriteLine("Team {0} had the lowest score with {1} goals", z, lowest);
}
}
}
答
我看到的第一个问题是,当你调用updateScores
,你传递的counter
值,这将是0,1,或2。所以你通过teamsGoalArray[team, 2]
填写teamsGoalArray[team, 0]
。但是,当您将总分加起来时,您将通过teamsGoalArray[team, 3]
加上teamsGoalArray[team, 1]
。所以你错过了每支球队第一场比赛的分数。
首先,如果a = b且a = c,则不需要检查b = c。你可以在那里放置一个断点来看看发生了什么? –
传递性使b == c无用。如果a = b和a = c,那么由布尔的传递属性和b = c。 – tafoo85
此外,我没有看到你问队C –