2013-03-24 70 views
0

所以,基本上发生了什么是我的代码编译和运行良好。但是当它运行存储MinScore是和minName变量的值留0方法不会从数组中提取正确的数据

static void Main(string[] args) 
{ 
    int count = 0; 
    string[] names = new string[MAX_SIZE]; 
    int[] scores = new int[MAX_SIZE]; 

    string name; 
    int sum = 0; 
    int minScore = 0; 
    int maxScore = 0; 
    string minName = string.Empty; 
    string maxName = string.Empty; 
    string input; 
    int score; 

    Console.WriteLine("===============Saturday Night Coders================"); 
    Console.WriteLine("===============Bowling Score Program================"); 

    for (int i = 0; i < MAX_SIZE; i++) 
    { 
     Console.WriteLine("\n Please Enter a name and a score separated by a space"); 
     Console.WriteLine("Enter a blank line when finished"); 

     input = Console.ReadLine(); 

     if (input == "") 
     { 
     count = i; 
     Console.WriteLine("===========INPUT COMPLETE========="); 
     break; 
     } 

     string[] splitInput = input.Split(); 

     name = splitInput[0]; 
     score = int.Parse(splitInput[1]); 
     scores[i] = score; 
     names[i] = name; 
     sum += score; 
     if (minScore >= score) 
     { 
     minScore = score; 
     minName = name; 
     } 

     if (maxScore <= score) 
     { 
     maxScore = score; 
     maxName = name; 
     } 
     count = i + 1; 
    } 

     double average = sum/count; 
     Console.WriteLine("Here are the scores for this game"); 
     PrintScores(names, scores, count); 
     Console.WriteLine("Congratulations {0}, your score of {1} was the highest",maxName, maxScore); 
     Console.WriteLine("{0} , your score of {1} was the lowest, Maybe you should find a new hobby",minName, minScore); 
     Console.WriteLine("\n The team average was {0:f2}", average); 
     Console.WriteLine("Press any key to continue..."); 
     Console.ReadKey(); 
    } 

    static void PrintScores(string[] names, int[] scores, int count) 
    { 
     for (int i = 0; i < count; i++) 
     { 
      Console.Write("{0} \t {1}", names[i], scores[i]); 
      if (scores[i] == MAX_SCORE) 
      { 
       Console.WriteLine("*"); 
      } 
      else 
      { 
       Console.WriteLine(""); 
      } 
      Console.WriteLine(); 
     } 
    } 
} 

我似乎无法找出为什么for循环工程为maxName和maxScore声明,但不是minName和MinScore是语句。任何帮助深表感谢

回答

5

,而不是验证码:

int minScore = 0; 
int maxScore = 0; 

它是一种更好的做法是使用

int minScore = int.MaxValue; 
int maxScore = int.MinValue; 

因此,任何值小于初始MINVALUE小,任何值大于初始最高值。

+0

非常感谢您的完全解决问题。至于好的做法,我会确保我这样做。 – 2013-03-24 23:05:41

2

我相信你可能已经在设置默认minScore做了逻辑上的错误,以0 如果是0决不会高于或等于任何得分大于0的情况下:

if (minScore >= score) 

实际上是

if (0 >= score) 

尝试,而不是执行以下操作:

if (minScore == 0 || minScore >= score) 
+0

尽管您可能需要考虑其他代码或对minScore使用不同的默认值,但您的最低分数为0. – 2013-03-24 22:19:24