如何进行Dim循环并将1加到Integer?

时间:2019-04-03 21:45:51

标签: vb.net

我需要帮助。 可能是“循环”命令与此有用,但我不知道该怎么做。 对不起,英语不好:P 继承人更多细节;

我不想再在我的VB.Net应用程序中使用此代码:

        Dim s As String = TypeHere.Text ' Heres target: TypeHere.Text
        Dim Words() As String = s.Split(New Char() {" "c}, StringSplitOptions.RemoveEmptyEntries)
        If Words.Length > 0 Then
            c1 = Words(0)
            If Words.Length > 1 Then
                c2 = Words(1)
            End If
            If Words.Length > 2 Then
                c3 = Words(2)
            End If
            If Words.Length > 3 Then
                c4 = Words(3)
            End If
            If Words.Length > 4 Then
                c5 = Words(4)
            End If
            If Words.Length > 5 Then
                c6 = Words(5)
            End If
            If Words.Length > 6 Then
                c7 = Words(6)
            End If
            If Words.Length > 7 Then
                c8 = Words(7)
            End If
            If Words.Length > 8 Then
                c9 = Words(8)
            End If
            If Words.Length > 9 Then
                c10 = Words(9)
            End If
            If Words.Length > 10 Then
                c11 = Words(10)
            End If
            If Words.Length > 11 Then
                c12 = Words(11)
            End If
            If Words.Length > 12 Then
                c13 = Words(12)
            End If
            If Words.Length > 13 Then
                c14 = Words(13)
            End If
            If Words.Length > 14 Then
                c15 = Words(14)
            End If
            If Words.Length > 15 Then
                c16 = Words(15)
            End If
            If Words.Length > 16 Then
                c17 = Words(16)
            End If
            If Words.Length > 17 Then
                c18 = Words(17)
            End If
            If Words.Length > 18 Then
                c19 = Words(18)
            End If
            If Words.Length > 19 Then
                c20 = Words(19)
            End If
            CMDTime()
        End If

我该怎么做呢?:

If Words.Length > ? Then
    Dim c?+1 = Words(?)
End If

如果用户输入单词的长度:4 自动生成:

    Dim c5 = Words(4)
    Dim c4 = Words(3)
    Dim c3 = Words(2)
    Dim c2 = Words(1)
    Dim c1 = Words(0)

我的程序示例; 用户> textbox.text>输入了多少单词> dim c1> word1,dim c2 ...

3 个答案:

答案 0 :(得分:0)

为什么不使用数组?由于我看不到完整的代码,因此我不完全了解您要做什么。

async def f():
    await asyncio.sleep(1)
    print('Hello')


async def g():
    await asyncio.sleep(0.5)
    print('Goodbye')


async def main():
    t1 = asyncio.ensure_future(repeat(3, f))
    t2 = asyncio.ensure_future(repeat(2, g))
    await t1
    await t2

loop = asyncio.get_event_loop()
loop.run_until_complete(main())

输出:

    Dim s As String = "The quick brown fox jumps over the lazy dog"
    Dim Words() As String = s.Split(New Char() {" "c}, StringSplitOptions.RemoveEmptyEntries)
    Dim c(Words.Length - 1) As String
    For x = 0 To Words.Length - 1
        c(x) = Words(x)
    Next

    Console.WriteLine(String.Join("-", c))
    Console.WriteLine(c(0))
    Console.WriteLine(c(1))

答案 1 :(得分:0)

最简单的答案是:不,您不能这样做:

    'Nooooo!
    If Words.Length > ? Then
        Dim c?+1 = Words(?)
    End If

但是...您是一名程序员,所以一切皆有可能!刚开始时并不总是如此。

您不能使用动态名称在循环中使变量变暗,但是有替代方法。例如,您可以拥有一个变量列表,您可以在循环的每一遍添加这些变量。

但这还不够,因为您的意思是变量名有意义。因此,您必须创建一个KeyValuePair列表。键将是有意义的数字,而值将是字符串。像这样:

    Dim myList As New List(Of KeyValuePair(Of Integer, String))

    Dim index As Integer = 0
    For Each s As String In words
        index += 1
        myList.Add(New KeyValuePair(Of Integer, String)(index, s))
    Next

但是,实际上,这种方法有点古怪,将不必要地难以使用。

另一方面,您可以将数组Words()声明为类中的模块化变量,并在每次需要使用它时对其进行更新。您之前的代码段将缩短为:

    Dim s As String = TypeHere.Text ' Heres target: TypeHere.Text
    Words = s.Split(New Char() {" "c}, StringSplitOptions.RemoveEmptyEntries)

    If Words.Length > 0 Then
        CMDTime()
    End If

现在,您知道Words(0)与c1相同。您可以改用Words(0)。但是要小心,因为如果您对这样的索引进行硬编码,则越界有时可能会崩溃。您可以像以前一样通过在If Words.Length > x Then块中保护弱代码来避免这种情况。或者,我更喜欢,如果您必须遍历数组中的每个条目,请在For Each循环中进行。如果数组中的项目为零,则此循环不会崩溃。

考虑时,您已经在做或几乎在做。您一直都有答案!这不是魔术吗?

如果这没有帮助,请尝试精确确定您要查找的内容。肯定有人会接球并帮忙!

玩得开心!

答案 2 :(得分:0)

您所需要的只是您的前两行代码:

Dim s As String = "Hello World"
Dim Words() As String = s.Split(New Char() {" "c}, StringSplitOptions.RemoveEmptyEntries)

然后您可以执行以下操作:

Console.WriteLine(Words.Length)
Console.WriteLine(Words(0))
Console.WriteLine(Words(1))

产生:

2
Hello
World

仅在您使用c1的地方将其替换为Words(0),将c2替换为Words(1),依此类推。您将使用Words.Length来知道有多少个你有话。