2014-04-01 39 views
0

我想定義一個數組,但在我的定義語句中說它在賦值之前使用了該變量。變量無法正確定義

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSolve.Click 
    Dim txtNumber1() As Integer = {Val(Me.txt1Number1.Text), Val(Me.txt2Number1.Text), Val(Me.txt3Number1.Text), Val(Me.txt4Number1.Text), Val(Me.txt5Number1.Text), Val(Me.txt6Number1.Text), Val(Me.txt7Number1.Text), Val(Me.txt8Number1.Text), Val(Me.txt9Number1.Text), Val(Me.txt10Number1.Text), Val(Me.txt11Number1.Text), Val(Me.txt12Number1.Text), Val(Me.txt13Number1.Text), Val(Me.txt14Number1.Text), Val(Me.txt15Number1.Text), Val(Me.txt16Number1.Text), Val(Me.txt17Number1.Text), Val(Me.txt18Number1.Text), Val(Me.txt19Number1.Text), Val(Me.txt20Number1.Text)} 
    Dim txtNumber2() As Integer = {Val(Me.txt1Number2.Text), Val(Me.txt2Number2.Text), Val(Me.txt3Number2.Text), Val(Me.txt4Number2.Text), Val(Me.txt5Number2.Text), Val(Me.txt6Number2.Text), Val(Me.txt7Number2.Text), Val(Me.txt8Number2.Text), Val(Me.txt9Number2.Text), Val(Me.txt10Number2.Text), Val(Me.txt11Number2.Text), Val(Me.txt12Number2.Text), Val(Me.txt13Number2.Text), Val(Me.txt14Number2.Text), Val(Me.txt15Number2.Text), Val(Me.txt16Number2.Text), Val(Me.txt17Number2.Text), Val(Me.txt18Number2.Text), Val(Me.txt19Number2.Text), Val(Me.txt20Number2.Text)} 
    Dim txtAnswer() As Integer = {Val(Me.txt1Answer.Text), Val(Me.txt2Answer.Text), Val(Me.txt3Answer.Text), Val(Me.txt4Answer.Text), Val(Me.txt5Answer.Text), Val(Me.txt6Answer.Text), Val(Me.txt7Answer.Text), Val(Me.txt8Answer.Text), Val(Me.txt9Answer.Text), Val(Me.txt10Answer.Text), Val(Me.txt11Answer.Text), Val(Me.txt12Answer.Text), Val(Me.txt13Answer.Text), Val(Me.txt14Answer.Text), Val(Me.txt15Answer.Text), Val(Me.txt16Answer.Text), Val(Me.txt17Answer.Text), Val(Me.txt18Answer.Text), Val(Me.txt19Answer.Text), Val(Me.txt20Answer.Text)} 
    Dim i As Integer 
    Dim intRealAnswer() As Integer 
    For i = 0 To txtNumber1(i) - 1 
     intRealAnswer(i) = txtNumber1(i) - txtNumber2(i) 
     If txtAnswer(i) = intRealAnswer(i) Then 
      Me.lblAnswer1.Text = "Correct:" & intRealAnswer(i) 
     Else 
      Me.lblAnswer1.Text = "Incorrect:" & intRealAnswer(i) 
     End If 
    Next 
End Sub 

誤差是發生在線路intRealAnswer(ⅰ)= txtNumber1(ⅰ) - txtNumber2(ⅰ) 感謝您的幫助。

回答

2

雖然你已經聲明intRealAnswer

Dim intRealAnswer() As Integer 

您還沒有指定中有多少項目在數組中。如果您需要初始化某些值,您可以像使用其他變量一樣執行此操作。事情是這樣的:

Dim intRealAnswer() As Integer = {0, 0, 0, 0, ...} 

或者你可以做到這一點申報的10個項目的數組(索引0〜9):

Dim intRealAnswer(9) As Integer 
0

在使用它之前,您必須初始化您的數組或聲明它的大小。

0

先給你個整數默認值?

Dim i As Integer = 0 
Dim intRealAnswer() As Integer = {0} 
0

你行 Dim intRealAnswer() As Integer 更改爲Dim intRealAnswer As Integer 有它需要一個數組,因爲你只存儲當前值沒有真正的理由。另外注意你應該擺脫Val()並使用Integer.Parse()和你的表單,如果有人把1.5放入一個文本框你是否檢查看到該值是一​​個真正的整數第一?只需要學習一些輸入內容,允許用戶在一個文本框中輸入1.5,而在另一個文本框中輸入爲1.5的用戶會期望在結果中看到小數。

0

我建議使用IEnumerable的對象,如表(中基於整數)巫

Dim txtNumbers as New List(Of Integer) From {Val(Me.txt1Number1.Text), Val(Me.txt2Number1.Text), ...} 

txtNumbers.Add(Val(Me.txt3Number1.Text)) 

甚至可以「Add」一個接一個,或只是「AddRange」。創意使用「For Each Item as Control in Me.Controls」使列表成爲可能。