2014-11-01 2 views
0

방금 ​​VB.net을 사용하는 방법을 배우기 시작했고 IndexOf 메서드를 사용하는 방법을 알아 내려고하고 있습니다. 문자열 내에서 여러 요소를 검색하는 데 사용할 수있을 것이라고 생각했지만 "인수 일치 매개 변수 'startIndex'가 'String'에서 'Integer'로 좁혀졌습니다 '라는 오류가 표시됩니다. 확실하지 않습니다. 왜. 여기에 제가 사용하고있는 코드가 있습니다.VB.net에서 IndexOf를 사용하는 방법을 배우려고합니다.

Module Module1 

Sub Main() 
    Dim cont As Integer = 0 
    Do Until cont = 1 
     Dim PlayerChoice As String 
     Dim ComputerChoice As String 
     Dim ran As New Random 
     Dim num As Integer = ran.Next(1, 4) 
     Dim PlayerName As String 
     Dim check As Integer 
     Console.WriteLine("Welcome to Rock, Paper, Scissors!") 
     Console.WriteLine("Please enter your name.") 
     PlayerName = Console.ReadLine() 
     Console.Clear() 
      Console.WriteLine("Would you like to choose rock, paper, or scissors?") 
     PlayerChoice = Console.ReadLine() 
     Do Until check <> -1 
      check = PlayerChoice.IndexOf("rock", "paper", "scissors") 
      Console.Clear() 
     Loop 
     Select Case num 
      Case 1 
       ComputerChoice = "rock" 
      Case 2 
       ComputerChoice = "paper" 
      Case 3 
       ComputerChoice = "scissors" 
     End Select 
     Console.WriteLine(PlayerName & ": " & PlayerChoice) 
     System.Threading.Thread.Sleep(750) 
     Console.WriteLine("Computer: " & ComputerChoice) 
     If PlayerChoice = "rock" Then 
      If ComputerChoice = "rock" Then 
       Console.WriteLine("There was a tie!") 
      ElseIf ComputerChoice = "paper" Then 
       Console.WriteLine("The computer wins!") 
      ElseIf ComputerChoice = "scissors" Then 
       Console.WriteLine("You win, " & PlayerName & "!") 
      End If 
     ElseIf PlayerChoice = "paper" Then 
      If ComputerChoice = "rock" Then 
       Console.WriteLine("You win, " & PlayerName & "!") 
      ElseIf ComputerChoice = "paper" Then 
       Console.WriteLine("There was a tie!") 
      ElseIf ComputerChoice = "scissors" Then 
       Console.WriteLine("The computer wins!") 
      End If 
     ElseIf PlayerChoice = "scissors" Then 
      If ComputerChoice = "rock" Then 
       Console.WriteLine("The computer wins!") 
      ElseIf ComputerChoice = "paper" Then 
       Console.WriteLine("You win, " & PlayerName & "!") 
      ElseIf ComputerChoice = "scissors" Then 
       Console.WriteLine("There was a tie!") 
      End If 
     End If 
     Console.ReadLine() 
     Console.Clear() 
     Console.WriteLine("Would you like to play again?") 
     Console.WriteLine("Enter 0 to play again.") 
     Console.WriteLine("Enter 1 to quit.") 
     Console.ReadLine() 
     Console.Clear() 
    Loop 
End Sub 

답변

2

엔드 모듈 당신은 그런 indexof를 호출 할 수 없습니다.

read the documentation 인 경우 은 반드시에만 한 번에 한 줄씩 검색해야합니다. 귀하의 경우에 당신이 3 시간을해야 할 것 또는 때까지이

Imports System.Runtime.CompilerServices 

Module Module1 

    Sub Main() 
     Dim test As String = "paper" 
     Console.WriteLine(test.IndexOf("rock", "paper", "scissors")) 

     test = "rock" 
     Console.WriteLine(test.IndexOf("rock", "paper", "scissors")) 

     test = "scissors" 
     Console.WriteLine(test.IndexOf("rock", "paper", "scissors")) 

     test = "foobar" 
     Console.WriteLine(test.IndexOf("rock", "paper", "scissors")) 

     Console.ReadKey() 
    End Sub 

End Module 

Public Module helper 

    <Extension()> 
    Public Function IndexOf(ByVal value As String, ParamArray values() As String) As Integer 
     Return Array.IndexOf(values, value) 
    End Function 
End Module 
+0

젠장 같은 도우미 메서드를 구현할 수있는 경기

을 찾아, 그 불행한 일입니다. 답변 해 주셔서 감사합니다. – Jason

+0

@ Jason, 원하는대로 작동 할 수있는 도우미 메서드를 작성할 수 있습니다 – Fredou

+0

도우미 메서드? 나는 그게 뭔지 잘 모르겠습니다. – Jason