【问题标题】:Nested For Loop vb.net嵌套 For 循环 vb.net
【发布时间】:2014-09-21 04:15:05
【问题描述】:

如果我在文本框中输入 5,答案将是这样的

1
1 2
1 2 3
1 2 3 4
1 2 3 4 5

如果我输入 10 个或更多,答案将是

1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
1 2 3 4 5 6
1 2 3 4 5 6 7
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9 10

我的代码:

Private Sub CmdOk_Click()

Dim a, b, c, d, z As Integer
z = TxtInput.Text

For a = 1 To z Step 1
List1.AddItem a
For b = 2 To z Step 1
List1.AddItem a & " " & b
For c = 3 To z step 1
List1.AddItem a & " " & b & " " & c
For d = 4 To z Step 1
List1.AddItem a & " " & b & " " & c & " " & d
Next d
Next c
Next b
Next a

End Sub

【问题讨论】:

  • 您有问题吗?
  • @Plutonix 他的问题可能是它在屏幕上显示不正确。但是,是的,他没有写任何问题。
  • 我在下面贴了一个最简单的方法

标签: vb.net loops for-loop nested


【解决方案1】:

这行得通。尝试这个。

List1.Items.Clear()
    Dim i, j, z As Integer
    Dim x, a As String
    z = TxtInput.Text
    For i = 1 To z
        For j = 1 To i
            x = Convert.ToString(j)
            a = a & " " & x
        Next
        List1.Items.Add(a)
        a = ""
    Next

【讨论】:

    【解决方案2】:

    在一行中(为清楚起见进行了编辑)

    List1.Items.AddRange(
        Enumerable.Range(1, Integer.Parse(Me.txtInput.Text)).
        Select(Of String)(
            Function(i)
                Return Enumerable.Range(2, i - 1).
                    Select(Of String)(Function(i1) i1.ToString()).
                    Aggregate(Of String)("1", Function(s1, s2) s1 & " " & s2)
            End Function).ToArray())
    

    附带说明,这种方法的速度大约是另一种方法的两倍,如果数字变大,这一点很重要。

    【讨论】:

    • 这不是codegolf.stackexchange.com。但无论如何都不错。 (祝你好运之后调试......)
    • @Sifu 谢谢。我的速度是你的两倍。
    • 我不怀疑你的比我的快得多。这就像比较Jquery.jsJquery.min.js的大小,肯定最小化版本更轻更快,但你能看懂其中的什么吗?我的意思是,要理解您的答案中发生的事情要困难得多,即使它更有效、更快。
    【解决方案3】:

    你为什么把它弄得这么复杂?

    这应该是可行的:

    Private Sub CmdOk_Click()
    
      Dim z as String = TxtInput.Text
      Dim ListTemporary as String = "1"
    
      For i = 2 To Integer.parse(z) Step 1
        ListTemporary = ListTemporary & " " & i.ToString()
        List1.AddItem ListTemporary
      Next
    
    End Sub
    

    【讨论】:

      【解决方案4】:
      Private Sub CmdOk_Click()     
       ListBox1.Items.Clear() ' clear the list before processing
        Dim s As String = "" ' initialize a string variable
        For i As Integer = 1 To CInt(TextBox1.Text) ' i loop for row counting
        s = "" ' in each itetration clear the s value
        For j As Integer = 1 To i ' for format the string to display in each index
        s = s & j & " " 
        Next
        ListBox1.Items.Add(s) ' add each item in row index
       Next
      End Sub
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-01-28
        • 2021-07-08
        • 2012-06-27
        • 2016-05-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多