我一直在努力使用下面这个算法。它应该将从八个文本框输入的时间转换为数组(txtTD1等)。然后它对它们进行排序,并为每个分配一个数字等级,该等级显示给用户(在txtR1等中)。
app.use(express.static(__dirname + '/'));
它完美无缺,除非数组中有重复项。比方说,例如,输入的txtTD1.text和txtTD2.text都具有相同的值。在这种情况下,会发生以下情况:
txtTD1 | txtR1
10:10.10 | 2
10:10.10 |
30:30.30 | 4
20:20.20 | 3
因此,它跳过第一个位置,将第二个位置分配给重复值的第一个实例,然后跳过第二个实例。
我使用消息框作为测试排序算法是否正常工作的方法,并且每次它告诉我它是(即,10:10.10是第一个,第二个10:10.10是第二个 - 将他们更喜欢他们是第一个和下一个是第三个,但不完全确定如何做到这一点。)
因此'匹配'算法显然存在问题。我确定它与IF语句的使用有关,但我不确定使用什么其他控制结构来避免这个问题。
我会感激任何见解和帮助!
答案 0 :(得分:0)
你的问题就在这里:
If timeArr(i) = txtTD1.Text Then
txtR1.Text = count
ElseIf timeArr(i) = txtTD2.Text Then
txtR2.Text = count
ElseIf timeArr(i) = txtTD3.Text Then
...
请参阅:每当您查看从txtTD1
到txtTD8
的文本框时 - 所以当其中两个具有相同的值时,您将在第一个文本框中停止两次(您正在使用{{毕竟1}}并且无论如何都会忽略第二个。
我能想到的最简单的事情就是检查文本框是否仍然是空的:
ElseIf
当然每个的文本框。
如果你想更多的想法,你可以轻易地阻止这个丑陋的副本和粘贴事情发生......但这是另一个问题