2017-02-22 3 views
2

Ich bin neu in der Programmierung und habe es durch meinen Kurs eingeführt. Ich habe Aufgaben in und aus dem College in Visual Basic mit Visual Studio gemacht, um Spiele und andere kleine Anwendungen zu machen . In meinem letzten Projekt habe ich jedoch ein Problem in einem meiner Arrays erlebt, das ich noch nie zuvor gesehen habe. Der genaue Fehler im bekommen kommt mit diesem, wenn hervorgehoben:VB Array IndexOf Fehler (Nullen und Kreuze Spiel)

Datentyp (en) des Typs (n) Parameter in der Methode ‚Public Geteilt Überlastungen Funktion IndexOf (Of T) (Array als T(), Wert Aus diesen Argumenten lässt sich T) As Integer nicht ableiten. Das explizite Angeben der Datentypen kann diesen Fehler korrigieren.

Ich habe alle Arrays (18, 9 verschiedene Tasten jeweils eine Frage und eine Antwort Variante enthält) in Form Last läuft, wie es der einzige Weg war ich die Arrays mit einem Zufallsgenerator arbeiten könnte und zeigt die Frage in der Taste. Dann wird der Array-Index gefunden und in der Antwort-Schaltfläche zum Senden erstellt. Ich gebe einige Schnipsel für weiteren Kontext unten von verschiedenen Punkten, wo das Array referenziert wird :)

Ich habe dies erstellt, um die Zeichenfolge global zu machen, aber ich habe eine Ahnung, das ist falsch?

Public Class Form3 
Public QBox1 As String 
Public QBoxA1 As String 

Dies ist, wo die Arrays sind und wie ich sie habe

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"} 

strukturiert Und schließlich ist dies die Antwort Absenden-Button in dem der Fehler

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 

Sorry für Informationen Überlastung, ich wollte auf Anhieb gründlich sein! Prost, um dies zu lesen, wenn Sie es bis zum Ende gemacht haben xD

Antwort

1

Ihre Erklärung ist nicht richtig. Da Sie ein Array möchten, deklarieren Sie es nicht als eine einzelne Zeichenfolge. Es sollte sein:

Public QBox1() As String 

dann im Load-Ereignis, deklarieren Sie es nicht mit einer Dim-Anweisung. neu bevölkern es einfach:

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

Beifall für die Hilfe Knospe, ich für das Problem der Erklärung gehe davon ist etwas entlang der Linien der Variablen als String zu oft festgelegt wird irgendeine Art von Überlastung verursacht in das Programm? – KingZ

+0

@KingZ Die ursprüngliche Deklaration war nur eine Zeichenfolge, die null war. Mit 'Dim' innerhalb eines Methodenblocks haben Sie Ihr Array deklariert, aber diese Deklaration wurde nur innerhalb des load-Ereignisses definiert - es existierte nicht außerhalb davon. – LarsTech