我有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();
});
答案 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)) {
...
}