Vb.net VB中的元音计数器

Vb.net VB中的元音计数器,vb.net,Vb.net,我正在努力让这个元音计数器工作。我应该能够输入的文件(我做的输入权利)应该阅读文本文件(它没有),然后计数元音。另外,如果可以的话,我可以让它数一数单词的数量,但这不是必要的。 错误代码表示变量myline已在当前块中声明??提前谢谢 代码如下: Imports System.IO Module Module1 Sub Main() Dim vowel As Integer = 0 Dim Text, myline As String

我正在努力让这个元音计数器工作。我应该能够输入的文件(我做的输入权利)应该阅读文本文件(它没有),然后计数元音。另外,如果可以的话,我可以让它数一数单词的数量,但这不是必要的。 错误代码表示变量myline已在当前块中声明??提前谢谢

代码如下:

Imports System.IO

Module Module1

    Sub Main()
        Dim vowel As Integer = 0
        Dim Text, myline As String
        Dim objStreamReader As StreamReader
        objStreamReader = New StreamReader("H:\vowelcounter.txt")
        Dim myline = objStreamReader
        Text = objStreamReader.ReadLine()

        Do While Not Text Is Nothing
            Console.WriteLine(text)
            For x = 0 To Text.Length
                If x = "a" Then
                    vowel = vowel + 1
                End If
                If x = "e" Then
                    vowel = vowel + 1
                End If
                If x = "i" Then
                    vowel = vowel + 1
                End If
                If x = "o" Then
                    vowel = vowel + 1
                End If
                If x = "u" Then
                    vowel = vowel + 1
                End If
                If x = "A" Then
                    vowel = vowel + 1
                End If
                If x = "E" Then
                    vowel = vowel + 1
                End If
                If x = "I" Then
                    vowel = vowel + 1
                End If
                If x = "O" Then
                    vowel = vowel + 1
                End If
                If x = "U" Then
                    vowel = vowel + 1
                End If
            Next

        Loop
        Console.ReadLine()
    End Sub

End Module
错误代码表示变量myline已在中声明 当前块

是的,它是:

Dim Text, myline As String   ' <----- HERE
Dim objStreamReader As StreamReader
objStreamReader = New StreamReader("H:\vowelcounter.txt")
Dim myline = objStreamReader ' <----- and HERE
您可以通过以下方式获得字数:

Dim words = text.Split()
Dim wordCount As Int32 = words.Length
这假定只有空格、制表符或新行字符是分隔符。如果您还需要其他字符:

Dim wordDelimiter As Char() = {" "C, ControlChars.Tab, ","C, "."C, "!"C, "?"C, _
";"C, ":"C, "/"C, "\"C, "["C, "]"C, _
"("C, ")"C, "<"C, ">"C, "@"C, """"C, _
"'"C}
Dim words = text.Split(wordDelimiter, StringSplitOptions.None)
Dim wordDelimiter As Char()={“C,ControlChars.Tab,”,“C,”,“C,”!“C,”?“C_
“;”C,“:”C,“/”C,“\”C,“[”C,“]”C_
"(C)"C","C","C","C",_
“'”C}
Dim words=text.Split(wordDelimiter,StringSplitOptions.None)

谢谢,但我需要先了解这一点,然后再开始更难的工作。我需要删除哪一个?正如你所看到的,我正在输入一个文件,所以我要输入myline作为字符串。我要删除哪一个。我删除了第一个myline作为字符串,现在它出现了以下情况:Microsoft.VisualBasic.dll中发生了类型为“System.InvalidCastException”的未处理异常。其他信息:从字符串“a”转换为类型为“Double”无效。它还说split不是text的成员。@user5423489:这取决于您。
Dim myline=objStreamReader
显然是错误的。为什么要将
StreamReader
称为
myLine
?这一切都与可读性有关。你看到我的简单方法了吗?这就是为什么我感到困惑的原因,我不知道该用哪一种方法来计算我正在输入@a的文档中的元音ᴎᴅᴏƞвєнᴎєƞ:可能还有更多的事情需要纠正。但我已经提出了一种三线方法,可以解决所有问题。我不能总是纠正每件事。如果您试图提及所有内容,这通常会污染答案,使OP和其他读者都无法理解导致主要问题的真正原因。
x
永远不会等于一个字符,因为它是介于0和
text.length之间的整数。您还使用了一个实现了
iDisposable
的对象,但您没有在代码末尾关闭它。您需要使用
Using
语句。只要
Text
在循环迭代执行时不发生任何变化,您的
Do-While循环将无限运行。您也可以使用
vowel+=1I
而不是
vowell=vowell+1
。你的陈述方式很好用,但是在大多数情况下速记更容易阅读
Dim wordDelimiter As Char() = {" "C, ControlChars.Tab, ","C, "."C, "!"C, "?"C, _
";"C, ":"C, "/"C, "\"C, "["C, "]"C, _
"("C, ")"C, "<"C, ">"C, "@"C, """"C, _
"'"C}
Dim words = text.Split(wordDelimiter, StringSplitOptions.None)