2 x 10随机生成的数字具有相同的总和c#

时间:2016-10-12 14:25:49

标签: c# listbox

我有2个列表框,我需要输入10个随机生成的数字。然后我需要计算列表框1的总和和列表框2的总和,并比较它们以查看哪个更大。我确实在每个列表框中得到不同的数字,但由于某种原因,列表框的总和始终是相同的。我如何使每个列表框的总和不同。 这是我目前的代码。

$(document).ready(function() {
function filterFilesList() {
    var rows = $('.file-row');
    var checked = $("#filterControls :checkbox:checked");

    if (checked.length) {
        var criteriaCollection = [];

        checked.each(function() {
            criteriaCollection.push($(this).val());
        });

        rows.each(function() {
            var row = $(this);
            var rowMatch = row.hasClass(criteriaCollection);

            if (rowMatch) {
                row.show();
            } else {
                row.hide(200);
            }
        });
    } else {
        rows.each(function() {
            $(this).show();
        });
    }
}

    $("#filterControls :checkbox").click(filterFilesList);
    filterFilesList();
});

1 个答案:

答案 0 :(得分:3)

您在代码中有错字复制+粘贴的旧故事):

listbox2total += Convert.ToInt32(listBox1.Items[k++]);

应该是

// please, notice "listBox2.Items"
listbox2total += Convert.ToInt32(listBox2.Items[k++]);

即。 listbox2total应为listBox2.Items的总和。

为了避免此类错误,请更改设计,不要自行复制,提取方法:

// Easiest, but not thread safe
private static Random random = new Random();

private static void FillBox(ListBox box, int count = 10) {
  box.Items.Clear();

  box.Items.AddRange(Enumerable
    .Range(0, count)
    .Select(x => (Object) random.Next(20))
    .ToArray());
}

private static int SumBox(ListBox box) {
  return box.Items
    .OfType<Object>()
    .Sum(x => Convert.ToInt32(x));
}

...

FillBox(listBox1);
FillBox(listBox2);

if (SumBox(listBox1) > SumBox(listBox2)) {
  ...
}