我能够编写此程序的这一小部分以按升序显示数字但我仍然无法按降序显示它。
此程序应该执行的操作的基础是以“From”和“To”的形式从用户接收两个数字值,并将其显示为列表框中的列表。用户选择升序或降序取决于他选择的两个单选按钮中的哪一个。
for a in range(len(string1)):
if dictio[string1[a]] is None:
dictio[string1[a]] = [a]
else:
dictio[string1[a]].append(a)
这是该程序的图像。 http://imgur.com/SVwN3Tx
注意: - 我对C#完全陌生,我刚刚开始在大学学习。
答案 0 :(得分:2)
我建议使用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;
}
}
答案 1 :(得分:1)
你正在递减错误的值
while (fromNum >= toNum)
{
lstResult.Items.Add(fromNum);
total = total + toNum;
toNum--;
}
所以,这就是你正在做的事情:
假设fromNum是10,而toNum是1。
在第一次迭代之后,fromNum仍为10,但toNum为0.减少fromNum而不是toNum,它应该相应地工作。
修改强>
要记住一些事情。如果总计正在收集所有数字的总和,那么写一个简洁的方法:
total = total + value;
是
total += value;
。
在进入逻辑之前,您还应验证数字是否真正有用。因此,如果为升序订单选择了单选按钮,则需要确保fromNum小于toNum,如果他们不是,则可能会抛出一个消息框:
if(fromNum < toNum)
{ run logic .... }
else
{ alert user ... }