2013-03-24 1 views
1

Итак, я написал эту программу для проекта, и все, казалось, получилось отлично. Я проверял свою работу с моим инструкторам кода, но я не имею копию первых 40 строк кода, чтобы проверить с, и я не могу понять, что вызвало эту проблемуНе может показаться, что исправлены неназначенные локальные переменные

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

     int sum = 0; 
     int minScore = 0; 
     int maxScore = 0; 

     string input; 

     string minName; 
     string maxName; 

     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 == "") 

      { 
       Console.WriteLine("===========INPUT COMPLETE========="); 
       break; 
      } 





      splitInput = input.Split(); 

      string name = splitInput[0]; 
      int score = int.Parse(splitInput[1]); 

      names[i] = name; 
      scores[i] = score; 
      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(); 
     } 
    } 



} 

проблема У меня с этой частью коды здесь

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); 

нераспределенным использованием локальных переменных ошибками являются с minName и значениями MAXNAME. если я объявляю их с minName = ""; maxName = ""; код будет компилироваться, но тогда имя для человека, набравшего наименьшее значение, будет «", и оценка будет равна 0. Это все, казалось, работало, пока я не добавил метод PrintScores. любая помощь приветствуется, я упражняюсь с ней уже более часа и все еще не могу найти решение.

ответ

2

Вы объявляете minName и maxName вне вашей петли. Вы только назначаете их внутри цикла for ... Проблема: если цикл for не запускается, переменные не назначаются. Поэтому компилятор запрещает их использовать.

Просто инициализируйте их значимыми значениями, например string.Empty.

+0

спасибо, что сработало –