2015-09-16 4 views
0

У меня есть цикл for, который просто не будет выполняться. Предполагается, что первый номер вводится пользователем и добавляет каждый номер между вторым номером, который вводит пользователь, вместе. Например, firstNumber = 5 и второе число = 8, число должно быть равно 26 (5 + 6 + 7 + 8). Кажется, я не могу заставить цикл for даже начать итерацию. Метка2 просто принимает инициализированное значение и ничего больше. Помощь была бы оценена.C# aspx.cs для цикла для добавления чисел

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

public partial class Menu_Items_and_Numbers : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 

    protected void Button2_Click(object sender, EventArgs e) 
    { 

     int firstNumber = Convert.ToInt32(TextBox1.Text); 
     int secondNumber = Convert.ToInt32(TextBox2.Text); 
     int numberTotal = 0; 

     for(int i=firstNumber; i > secondNumber; i++) 
     { 

      numberTotal += i; 

     } 

     Label2.Text = Convert.ToString(numberTotal); 
    } 
} 

ответ

1

Предполагается взять firstNumber, вводимый пользователем и добавить каждое число между вторым числом пользователя входит вместе. Для экземпляр firstNumber = 5 и второе число = 8, число должно = 26 (5 + 6 + 7 + 8).

Прямо здесь.

for(int i=firstNumber; i > secondNumber; i++) 

Таким образом, если пользователь вводит 5 и 8, исполнение выглядит следующим образом:

for (int i=5 ; 5 > 8; i++) 

и выходит прямо там, потому что 5 > 8 ?= false.

Помните, что для петли:

for (initialize variable; while condition; increment variable) 
+1

Спасибо за проработку, я думал об обратном движении во время условия. –

1

Вашего состояния на ваш цикл неверен. Правильное условие:

for (int i = firstNumber; i <= secondNumber; i++) 
{ 
    numberTotal += i; 
} 
0

Ваше условие цикла недействительно. Попробуйте

for(int i=firstNumber; i <= secondNumber; i++) 
    { 
     numberTotal += i; 
    } 

или это:

numberTotal = Enumerable.Range(firstNumber, secondNumber - firstNumber + 1).Sum(); 

Enumerable.Range дает все цифры от первого до второго числа и Sum() суммирует их.

0

вы могли бы сделать что-то вроде этого, чтобы убедиться, что firstnumber всегда меньшее число

for (int i = GetSmallerNumber(firstNumber, secondNumber); i < GetLargerNumber(firstNumber, secondNumber); i++) 
     { 
      numberTotal +=i; 
     } 

public Int32 GetSmallerNumber(Int32 Number1, Int32 Number2) 
    { 
     if (Number1 < Number2) 
      return Number1; 
     else 
      return Number2; 
    } 
public Int32 GetLargerNumber(Int32 Number1, Int32 Number2) 
    { 
     if (Number1 < Number2) 
      return Number2; 
     else 
      return Number1; 
    } 
0

первый таким образом обыкновение добавить второй номер это потому, что цикл не остановится (второй-1), так как следующий номер будет делать это я = второй, так что если и хотят, чтобы второе число, которое нужно добавить к вам придется использовать второй + 1, а не только второго, так что будет как

for (int i = first; i < second+1; i++) 

или

for (int i = first; i <= second; i++) 

Во-вторых, вы столкнетесь с проблемой, если первое число больше, чем второе число.

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