降序数C#

降序数C#,c#,numbers,C#,Numbers,我能够编写这个程序的这一小段,以升序显示数字,但我仍然无法让它以降序显示 这个程序应该做的基本工作是以“from”和“To”的形式从用户处获取两个数值,并将其显示为列表框中的列表。用户选择升序还是降序取决于他选择了两个单选按钮中的哪一个 private void btnCalc_Click(object sender, EventArgs e) { double fromNum, toNum, total = 0; fromNum = doub

我能够编写这个程序的这一小段,以升序显示数字,但我仍然无法让它以降序显示

这个程序应该做的基本工作是以“from”和“To”的形式从用户处获取两个数值,并将其显示为列表框中的列表。用户选择升序还是降序取决于他选择了两个单选按钮中的哪一个

    private void btnCalc_Click(object sender, EventArgs e)
    {

        double fromNum, toNum, total = 0;

        fromNum = double.Parse(txtFrom.Text);
        toNum = double.Parse(txtTo.Text);

        lstResult.Items.Clear();
        lblResult.Text = "";

        if (radAsc.Checked)
        {
            while (fromNum <= toNum)
            {
                lstResult.Items.Add(fromNum);

                total = total + fromNum;

                fromNum++;
            }
        }

        else
        {
            while (fromNum >= toNum)
            {
                lstResult.Items.Add(fromNum);

                total = total + toNum;

                toNum--;
            }
        }

        lblResult.Text = total.ToString();
    }
private void btnCalc\u单击(对象发送者,事件参数e)
{
双倍fromNum,toNum,总计=0;
fromNum=double.Parse(txtFrom.Text);
toNum=double.Parse(txtTo.Text);
lstreult.Items.Clear();
lblResult.Text=“”;
如果(雷达检查)
{
while(fromNum=toNum)
{
lstreult.Items.Add(fromNum);
总计=总计+音调;
音调--;
}
}
lblResult.Text=total.ToString();
}
这是一个程序的图像。


注意:-我对C完全是新手,我刚开始在大学里学习它。

你在减少错误的值

while (fromNum >= toNum)
{
    lstResult.Items.Add(fromNum);

    total = total + toNum;
    toNum--;
}
所以,下面是你正在做的:

假设fromNum是10,toNum是1

在第一次迭代之后,fromNum仍然是10,但toNum是0。减小fromNum而不是toNum,它应该相应地工作

编辑

有几件事需要注意。如果total是收集所有数字的总和,那么一个简洁的方法是:

total=total+value

total+=值

在进入逻辑之前,您还应该验证这些数字是否实际有效。因此,如果选择单选按钮进行升序,您需要确保fromNum小于toNum,如果它们不是:

if(fromNum < toNum)
    { run logic .... }
else
    { alert user ... }
if(fromNum
我建议使用
for
循环,而不是
while
,这使得代码易于实现:

    if (radAsc.Checked)
    {
        // num += 1: - I've seen odds/even switch on the screenshot
        // so you may want to change/add num += 1 into num += 2
        for (double num = fromNum; num <= toNum; num += 1) {
          lstResult.Items.Add(num);
          total = total + num;
        }
    }
    else
    {
        // Descending order: 
        //   - start from the bottom (toNum)
        //   - loop until the top (fromNum) 
        //   - descend by 1 (num -= 1)
        for (double num = toNum; num >= fromNum; num -= 1) {
          lstResult.Items.Add(num);
          total = total + num;
        }
    }
if(雷达检查)
{
//num+=1:-我在屏幕截图上看到了赔率/偶数切换
//因此,您可能需要将num+=1更改/添加到num+=2
for(双num=fromNum;num=fromNum;num-=1){
lstreult.Items.Add(num);
总数=总数+数量;
}
}

您正在递减音调(在递减逻辑中)。但fromNum总是按降序大于toNum,所以您创建了一个无休止的循环。您需要从num开始递减。请注意,您还应该包括一个检查,以确保升序时-fromNum大于toNum,降序时亦然。您好,我完全同意您的建议,以这种方式编写它显然是合乎逻辑的。但是我担心教授可能会对我学习编码的独立性不满意。我非常感谢您的精彩建议,我将在将来多次使用它。嘿,非常感谢您的精彩解释,它在理解我在代码中的错误方面帮助了我很多!