我正在尝试创建一个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.
提前致谢。
答案 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