我如何在vb.net中创建一个infinate数组

时间:2016-10-13 11:52:37

标签: arrays vb.net loops while-loop

我正在尝试创建一个while循环,当有人输入“。”时会结束。

我的代码如下,我得到代码后面的错误:

    Dim x, y As Integer
    Dim stuff(x) As String
    y = 1
    x = 0
    While y = 1
        x = x + 1
        Console.WriteLine("input stuff end with .")
        stuff(x - 1) = Console.ReadLine()
        If stuff(x - 1) = "." Then
            y = 0
        End If

    End While

错误消息:

An unhandled exception of type 'System.IndexOutOfRangeException' occurred in practise.exe

Additional information: Index was outside the bounds of the array.

提前致谢。

4 个答案:

答案 0 :(得分:4)

使用列表

    Dim stuff As New List(Of String)
    Do
        Console.WriteLine("input stuff end with .")
        stuff.Add(Console.ReadLine())
    Loop While stuff(stuff.Count - 1) <> "."

答案 1 :(得分:0)

您可以使用dictionary代替数组,您可以使用x变量作为密钥

答案 2 :(得分:0)

x = x + 1
ReDim Preserve stuff(x) 'add this line
Console.WriteLine("input stuff end with .")

如果运行一段时间,您也可能会超出Integer数据类型的范围。 <{1}}(或Dim x As Long,如果您需要更多)。

答案 3 :(得分:0)

基本上你的代码问题就是你的数组。下面的代码应该最初定义大小为1的数组,然后你可以在循环中重新定义大小为(x + 1)的数组。

    Dim x, y As Integer
    Dim stuff(1) As String
    y = 1
    x = 0
    While y = 1
        x = x + 1
        Console.WriteLine("input stuff end with .")
        stuff(x - 1) = Console.ReadLine()
        If stuff(x - 1) = "." Then
            y = 0
        End If
        ReDim Preserve stuff(x + 1)

    End While

希望这有帮助

[更新2016年10月13日15:21] 已将ReDim更改为ReDim Preserve以保留数组中的数据。谢谢topshot