2

これは本当に私を混乱させました。ユーザーが「A」または「a」を入力すると、プログラムは「x」を実行するはずのビジュアルベーシックコンソールアプリケーションを実行しようとしていますが、それは機能しません。私が得るエラーは次のとおりです。

文字列"a"からタイプ'Boolean'への変換は無効です。

これが私のコードです:

モジュールModule1

Sub Main()
    Dim Selection As String

    Console.WriteLine("Please select your function:")
    Console.WriteLine("* To convert binary to decimal, press A,")
    Console.WriteLine("* Or to convert decimal to binary, press B")

    Selection = Console.ReadLine

    If Selection = "A" Or "a" Then
        Console.WriteLine("This will be A")
    ElseIf Selection = "B" Or "b" Then
        Console.WriteLine("This will be B")
    ElseIf Selection = Not "A" Or "a" Or "B" Or "b" Then
        Console.WriteLine("Please try again")
        Do Until Selection = "A" Or "a" Or "B" Or "b"
        Loop
    End If


End Sub

正しく機能させるには、このコードでOrを正しく使用する必要がありますか?

ありがとうございました、

ジェイク

4

4 に答える 4

5

条項Ifは次のようになります。

If Selection = "A" Or Selection = "a" Then

間の句Orそれぞれブール式である必要があり、ブール式で"a"はなく単なる文字です。

于 2012-10-29T20:04:08.337 に答える
3

Select Caseの使用は、さらに別の方法です。

Sub Main()
    Console.WriteLine("Please select your function:")
    Console.WriteLine("* To convert binary to decimal, press A,")
    Console.WriteLine("* Or to convert decimal to binary, press B")
    Console.WriteLine("* To Quit, press Q")
    Dim Selection As String = ValidateInput()
    If Selection <> "Q" Then
        'do something
    End If
End Sub

Function ValidateInput() As String

    Dim Selection As String
    Selection = Console.ReadLine

    Select Case Selection.ToUpper
        Case "A"
            Console.WriteLine("This will be A")
        Case "B"
            Console.WriteLine("This will be B")
        Case "Q"
            Return "Q"
        Case Else
            Console.WriteLine("Please try again")
            ValidateInput()
    End Select
    Return Selection

End Function
于 2012-10-29T20:27:13.223 に答える
3

ifステートメントの前に大文字に入力された文字列を変更することをお勧めします。また、最後のelse ifステートメントは不要であり、単一のelseに置き換えることができます。

Sub Main()
    Dim Selection As String

    Console.WriteLine("Please select your function:")
    Console.WriteLine("* To convert binary to decimal, press A,")
    Console.WriteLine("* Or to convert decimal to binary, press B")

    Selection = Console.ReadLine.ToUpper() 'Not tested otherwise use the one below
'Selection=Selection.ToUpper()

    If Selection = "A" Then
        Console.WriteLine("This will be A")
    ElseIf Selection = "B"  Then
        Console.WriteLine("This will be B")
    Else
        Do Until Selection = "A"  Or Selection = "B" 
               'Loop Code goes here
        Loop
    End If


End Sub
于 2012-10-29T20:11:36.287 に答える
0

Estou tentando fazer um sistema de gerenciamento de uma loja de cafe、mas oLoginnãotadandocerto、quem puder me ajudarporfavoreuagradeço。

Ocódigocomoerroéess:

Public Class Login
      
 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    If UnameTb.Text = "" Or PasswordTb.Text Then
        MsgBox("Digite o Nome de Usuário e a Senha")
    ElseIf UnameTb.Text = "Admin" And PasswordTb.Text = "Password" Then
        Dim Obj = New Items
        Obj.Show()
        Me.Hide()
    Else
        MsgBox("Nome de Usuário ou Senha Incorretos")
        UnameTb.Text = ""
        PasswordTb.Text = ""

    End If
End Sub
于 2021-09-18T20:31:54.063 に答える