2017-02-22 24 views
2

作爲新的節目,並讓它通過我的課程介紹給我,我一直在使用Visual Studio,使遊戲和其他應用程序很少執行任務進出學院在Visual Basic中。然而,在我最近的項目中,我遇到過一個我以前從未遇到的陣列中的問題。在突出顯示時出現的具體錯誤是:VB陣列的IndexOf錯誤(圈與叉遊戲)

方法'Public Shared Overloads Function IndexOf(Of T)(array As T(),value)中的類型參數的數據類型(s)作爲T)作爲整數「不能從這些論據中推斷出來。明確指定數據類型可能會更正此錯誤。

我所有的陣列(18,爲9個不同的按鈕,每個按鈕包含問題和答案的變體)的形式負荷運行,因爲它是我能得到陣列與一個隨機化工作,並顯示出的唯一途徑問題在按鈕。然後在提交答案按鈕中找到並創建數組索引。我給來自各個點下方進一步方面的一些片段,其中陣列被引用:)

我創造了這個讓全球的字符串,但我有一個暗示這是錯的?

Public Class Form3 
Public QBox1 As String 
Public QBoxA1 As String 

這就是陣列以及我是如何構建他們

Public Sub Form3_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
BOX 1 (TOP LEFT) 
Dim QBox1() As String = {"√81", "4x6", "16/4", "21+18", "81-23"} 
Dim QBoxA1() As Integer = {"9", "24", "4", "39", "58"} 

最後這是提交答案按鈕錯誤所在

If QBoxA1.Contains(txt_AnswerAttempt.Text) Then 

Dim question_index = Array.IndexOf(QBox1, btn_Q1.Text) 
Dim answer_index = Array.IndexOf(QBoxA1, answerAttemptDisplay.Text) 

If question_index = answer_index Then 
MsgBox("Correct Answer!") 

Else 
MsgBox("Wrong Answer!") 

End If 

End If 

對不起,信息內超負荷,我想徹底徹底蝙蝠!乾杯這給讀,如果你去到年底的xD

回答

1

你的聲明是不正確的。既然你想要一個數組,不要把它聲明爲單個字符串。它應該是:

Public QBox1() As String 

然後在load事件中,不要用Dim語句重新聲明它。剛剛重新填充它:

QBox1 = {"√81", "4x6", "16/4", "21+18", "81-23"} 
+0

乾杯的幫助芽,我假設該問題的解釋是沿變線的東西被設定爲一個字符串的次數太多導致某種形式的過載保護該程序? – KingZ

+0

@KingZ原始聲明只是一個空字符串。通過在方法塊內部使用'Dim',你聲明瞭你的數組,但是這個聲明只在加載事件中被限制 - 它並不存在於它之外。 – LarsTech