2013-02-18 3 views
1

У меня возникли проблемы с созданием цикла, который проверяет наличие 5 переменных между переменными 10 и 50. Я считаю, что настроил правильную кодировку, но я получаю сообщение об ошибке, что я не может преобразовать int в bool. Вот что у меня есть:Преобразование Int в Bool

 string userName = ""; 
     int v1, v2, v3, v4, v5 = 0; 
     float avg; 
     float variance; 

     Console.WriteLine("What is your name?"); 
     userName = Console.ReadLine(); 

     Console.WriteLine(); 

     int i = 1; 

     while (i <= 5) 
     { 
      int InputCheck = 0; 
      Console.WriteLine("Please input a number {0} between 10 and 50;", i); 
      InputCheck = Convert.ToInt32(Console.ReadLine()); 

      if (InputCheck >= 10 && InputCheck <= 50) 
      { 

       if (i >= 10 && i <= 50) 
        i++; 
       if (i != 1) 
       { 
        InputCheck = v1; 
       } 
       if (i != 2) 
       { 
        InputCheck = v2; 
       } 

       if (i == 3) 
       { 
        InputCheck = v3; 
       } 
       if (i == 4) 
       { 
        InputCheck = v4; 
       } 
       if (i == 5) 
       { 
        InputCheck = v5; 
       } 
       if (InputCheck < 10 || InputCheck > 50) 
       { 
        Console.WriteLine("The number you entered is either to high or to low please re-enter a number:"); 
       } 
      } 

Любая помощь была бы принята с благодарностью.

+0

WHA t предназначена ли ваша программа? Ваш цикл while будет проходить только 5 раз, а значение переменной переменной 5 будет равно 5, поэтому ваш первый if (if (i> = 10 && i <= 50)) никогда не будет доступен, поэтому ваше значение переменной i всегда будет 1. Возможно я упускаю что-то ... – fabricio

+0

Мне поручено, чтобы пользователь вводил 5 чисел от 10 до 50. Он хочет, чтобы мы создали циклы для проверки и убедитесь, что каждая переменная находится между этими значениями. Он также хочет, чтобы у нас был только один console.readline() l; – jimjam456

ответ

1

Я не уверен на 100%, но я думаю, что ваша ошибки приходит от этой линии:

Console.WriteLine("Please input a number {0} between 10 and 50;", i); 

Вы дающая INT «я», где он ожидает логическое значения. Может быть, это поможет: http://msdn.microsoft.com/en-us/library/70x4wcx1.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-2

Что касается остальной части кода:

  • Calamar888 является правильным, первый, если заявление вы используете для «я» никогда не будет оценивать как истинное.
  • Кроме того, ifs, следующие за ним (if (i! = 1), и т. Д.), Будут оценивать значение true более одного раза, перезаписывая значения, которые вы уже сохранили (i! = 1, когда i = 2, 3, 4 , или 5).
  • В этих заявлениях вы указываете , изменяя значение 'InputCheck', не сохраняет его.
  • Вы должны рассмотреть возможность использования массивов, чтобы сделать вашу программу короче
  • Ваш еще «если (InputCheck < 10 || InputCheck> 50)» не должно быть внутри первой, если она никогда не будет истинным

Предполагая, что вы объявляете:

int v[5]; /* creates array v[0], v[1], ... v[4] */ 
int i = 0; 

while (i<=4){ 
/* internal code */ 
} 

что-то, как это должно работать:

/* internal code */ 

    if (InputCheck >= 10 && InputCheck <= 50) 
     { 
      v[i] = InputCheck; 
      i++; 

     } 
    else if (InputCheck < 10 || InputCheck > 50) 
     { 
      Console.WriteLine("The number you entered is either to high or to low please re-enter a number:"); 
     }