2017-02-22 17 views
2

Будучи новичком в программировании и познакомила меня с моим курсом, я выполнял задания в Колледже в Visual Basic и из него, используя Visual Studio, чтобы создавать игры и другие небольшие приложения , Однако в моем последнем проекте у меня возникла проблема в одном из моих массивов, с которыми я никогда не сталкивался. Конкретные им ошибка получение приходит с этим, когда выделено:Ошибка VB Array IndexOf (игра Noughts and Crosses)

Тип данных (ы) параметр типа (ов) в методе «Public Shared перегрузки Function IndexOf (Of T) (массив Как T(), значение Как T) Поскольку Integer не может быть выведен из этих аргументов. Указание типа (ов) данных явно может исправить эту ошибку.

У меня есть все массивы (18, для 9 различных кнопок каждая из которых содержит вопрос и вариант ответа) выполняется в виде нагрузки, поскольку это был единственный способ, которым я мог бы получить массивы для работы с randomiser и показать вопрос в кнопке. Затем индекс массива будет найден и создан в кнопке ответа отправки. Я дам некоторые фрагменты для дальнейшего контекста ниже из разных точек, на которые ссылается массив :)

Я создал это, чтобы сделать строку глобальной, но у меня есть подозрение, что это неправильно?

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 

затем в событии загрузки не переутверждайте его с помощью инструкции Dim. Просто заполнить его повторно:

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

Приветствия для помощи зародыша, я предполагаю, объяснение этой проблемы является то, что вдоль линий переменного задаются как строка слишком много раз, в результате чего какого-то перегрузки в программа? – KingZ

+0

@KingZ Оригинальное объявление было просто строкой, которая была нулевой. Используя 'Dim' внутри блока методов, вы объявили свой массив, но это объявление было ограничено только внутри события загрузки - оно не существовало вне его. – LarsTech