2016-02-26 4 views
0

Я пытаюсь сделать простую программу, которая вычисляет пройденное расстояние на основе введенной пользователем скорости и времени. Он выводит каждое пройденное расстояние за каждый час и выводит его в поле списка. Я не уверен, как заставить цикл прекратить итерацию в указанное пользователем время. Я также не уверен, что цикл for - это правильный цикл для использования.Итерация стоп-цикла на основе ввода пользователем

private void calculateButton_Click(object sender, EventArgs e) 
    { 

     //decalre variables for speed, time, distance 
     double speed; 
     double time; 
     double distance; 

     //declare constants to be used 
     const int interval = 1; 
     const int start_hours = 0; 
     const int end_hours = 10; 


     if (double.TryParse(speedTextBox.Text, out speed)) 
     { 

      //try to get time from hours text box 
      if (double.TryParse(hoursTextBox.Text, out time)) 
      { 

       //display table of speeds 
       for (time = start_hours; time <= end_hours; time += interval) 
       { 
        //calculate distance driven 
        distance = speed * time; 

        //display the distance driven in an amount of time 
        listBox1.Items.Add("After " + time + " hours, the distance traveled is " + distance); 
       } 
      } 
      else 
      { 
       //invalid entry for hours 
       MessageBox.Show("Invalid entry for time"); 
      } 
     } 
     else 
     { 
      //invalid entry for speed 
      MessageBox.Show("Please enter MPH"); 
     } 


    } 
} 
+0

вы уже остановить цикл в конечных часов: * время <= end_hours; * – Gusman

+0

Я знаю, я поставил end_hours быть 10 как исправить/взломать за это время. Мне нужно это, чтобы остановить повторение из-за количества введенных пользователем часов. Поэтому, если пользователь вводит 3 часа, он определяет расстояние через 1 час, затем 2 часа, затем 3 часа, а затем останавливает итерацию. – gingikid

+0

1-не объявляйте end_hours как const, justa plain int, 2-разберите текст, в который пользователь вводит номер, и установите его на end_hours – Gusman

ответ

0

Время должно быть предел в цикле for.

for (int i = start_hours; i <= time; i += interval) 
      { 
       //calculate distance driven 
       distance = speed * i; 

       //display the distance driven in an amount of time 
       listBox1.Items.Add("After " + i + " hours, the distance traveled is " + distance); 
      } 
+0

Могу ли я также изменить вывод в поле списка, поместив int "i" где время? // отображать расстояние, пройденное в течение времени listBox1.Items.Add («После« + i + »часов пройденное расстояние« + расстояние »; – gingikid

+0

Если вы хотите отображать каждый час, пока введенный час не достигнет цикла for, вы замените время на i. Время покажет введенные часы, я покажу hou – Flaugzig

+0

, если вы хотите только добавить в список один раз, вам нужно поставить инструкцию listbox1.items.add за цикл for – Flaugzig

Смежные вопросы