2011-11-28 92 views
0

我写了一个程序,要求一个人输入一个团队号码(假设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); 
     } 
    } 



    } 
+0

首先,如果a = b且a = c,则不需要检查b = c。你可以在那里放置一个断点来看看发生了什么? –

+0

传递性使b == c无用。如果a = b和a = c,那么由布尔的传递属性和b = c。 – tafoo85

+0

此外,我没有看到你问队C –

回答

1

我看到的第一个问题是,当你调用updateScores,你传递的counter值,这将是0,1,或2。所以你通过teamsGoalArray[team, 2]填写teamsGoalArray[team, 0]。但是,当您将总分加起来时,您将通过teamsGoalArray[team, 3]加上teamsGoalArray[team, 1]。所以你错过了每支球队第一场比赛的分数。

+0

是的,就是这样。非常感谢。 –

+0

你如何标记回答的问题? –

+0

请点击此答案旁边的打勾标记,表示已接受。 – V4Vendetta