我有一个不会执行的for循环。它应该取用户输入的firstNumber,并在用户输入的secondNumber之间添加每个数字。例如,firstNumber = 5,第二个数字= 8,numberTotal应= 26(5 + 6 + 7 + 8)。我似乎无法让我的for循环甚至开始迭代。 label2只是假设初始值而没有别的。帮助将不胜感激。
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);
}
}
答案 0 :(得分:1)
应该取用户输入的firstNumber并添加 用户输入的secondNumber之间的每个数字一起。对于 实例,firstNumber = 5,第二个数字= 8,numberTotal 应= 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循环是:
for (initialize variable; while condition; increment variable)
答案 1 :(得分:1)
你的for循环的条件不正确。正确的条件是:
for (int i = firstNumber; i <= secondNumber; i++)
{
numberTotal += i;
}
答案 2 :(得分:0)
您的循环条件无效。试试这个
for(int i=firstNumber; i <= secondNumber; i++)
{
numberTotal += i;
}
或者这个:
numberTotal = Enumerable.Range(firstNumber, secondNumber - firstNumber + 1).Sum();
Enumerable.Range为您提供从第一个到第二个数字的所有数字,Sum()将它们相加。
答案 3 :(得分:0)
你可以做这样的事情,以确保第一个数字始终是较小的数字
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;
}
答案 4 :(得分:0)
首先这样不会添加第二个数字因为for循环将停在(second-1),因为下一个数字会使它i = second,所以如果你想要添加第二个数字你必须使用第二个+ 1而不是第二个,所以它就像
for (int i = first; i < second+1; i++)
或
for (int i = first; i <= second; i++)
如果第一个数字大于第二个数字
,您将面临问题