当第一个输入高于第二个输入时,我如何按降序输出数字序列?反之亦然



这个正在工作,但它只输出升序的数字序列,即使第一个输入高于第二个输入。

以下是我想要发生的

时升序

首次输入:2

第二次输入:8

结果2、3、4、5、6、7、8

时的下降顺序

首次输入:9

第二次输入:6

结果:9、8、7、6

Private Sub btnAccept_Click(sender As Object, e As EventArgs) Handles btnAccept.Click
Dim A = txtstart.Text
Dim B = txtend.Text
Dim Start, Ending As Integer
If A < B Then
Start = A
Ending = B
Else
Start = B
Ending = A
End If
While Start <= Ending
lblbetween1.Text = lblbetween1.Text & Start & " , "
Start += 1
End While
End Sub

使用For循环,您可以选择增量,这样您就可以检查数字的顺序,并适当地设置增量,例如:

Option Strict On
Imports System.Text
' ....
Private Sub btnAccept_Click(sender As Object, e As EventArgs) Handles btnAccept.Click
Dim a = Integer.Parse(txtStart.Text)
Dim b = Integer.Parse(txtEnd.Text)
Dim inc As Integer = -1
If a < b Then
inc = 1
End If
Dim sb As New StringBuilder()
For i = a To b Step inc
sb.Append(i & " , ")
Next
lblbetween1.Text = sb.ToString()
End Sub

幸运的是,如果数字相等,这仍然有效,因此不需要特殊情况。

最好使用StringBuilder来连接大量字符串,而不是仅对大量字符串或控件的内容使用&

Option Strict On确保程序不会尝试执行可能会产生意外结果的操作,例如向字符串中添加数字。您应该将其设置为新项目的默认值。

您可以这样做:

将需要添加

Imports System.Linq

然后

Dim a = 10I
Dim b = 15I
Dim start = Math.Min(a, b)
Dim count = Math.Max(a, b) - start
Dim series = Enumerable.Range(start, count + 1).ToList
If b < a Then
series.Reverse()
End If
Dim result = String.Join(",", series)

最新更新