【问题标题】:Word and vowel count in VB 2017VB 2017 中的单词和元音计数
【发布时间】:2018-01-04 23:34:05
【问题描述】:

我需要编写一个简单的控制台应用程序,该应用程序接受一个输入字符串,然后调用一个子例程来计算字符串中单词的数量和元音的数量。我写了这个,由于某种原因它没有输出我在Console.Writeline 代码中输入的文本。有关如何执行此操作的任何帮助?

Module Module1

    Sub Main()
        Dim Sentence As String
        Console.WriteLine("Sentence Analysis")
        Console.WriteLine()
        Console.WriteLine("Enter a sentence then press 'Enter'")
        Console.WriteLine()
        Sentence = Console.ReadLine()
        Sentence = Sentence.ToUpper
        Call Words(Sentence)
        Call Vowels(Sentence)
        Console.ReadLine()
    End Sub

    Sub Words(ByVal Input As String)
        Dim Count As Integer
        Dim Index As Short
        Dim Character As Char
        Do Until Index = Len(Input)
            Character = Input.Substring(Index)
            If Character = " " Then
                Count = Count + 1
            End If
        Loop
        Console.WriteLine("Your sentence contains {0} words.", (Count))
    End Sub

    Sub Vowels(ByVal Input As String)
        Dim Count As Integer
        Dim Vowels() As String = {"A", "E", "I", "O", "U"}
        Dim Index As Short
        Dim Character As Char
        Do Until Index = Len(Input)
            Character = Input.Substring(Index)
            If Character = Vowels(Index) Then
                Count = +1
            End If
        Loop
        Console.WriteLine("Your sentence contains {0} words.", (Count))
    End Sub
End Module

【问题讨论】:

  • 除了朋友的回答之外,您在 Vowels 方法中有一个错字:Count = +1 - 这将始终是 Count = 1。要增加它,请执行 Count = Count + 1Count += 1
  • 另外,当Index 大于 4 时,Vowels(Index) 将超出范围。请改用 Array.IndexOf() 或添加另一个循环,迭代您的 Do 循环中的每个元音。

标签: vb.net visual-studio visual-studio-2017 word-count


【解决方案1】:

Words 中有以下代码:

Do Until Index = Len(Input)

索引永远不会增加,因此会无限循环。

Vowels 也有同样的问题

【讨论】:

    【解决方案2】:

    以下内容对你有帮助吗?

    而不是查看句子是否包含元音,而是查看元音列表是否包含句子中的每个字符。

    对于字数,它类似地询问包含单个空格的字符串是否包含句子中的每个字符(在这种情况下,“字数”只是空格的计数,因此前导或尾随空格,或之间的额外空格单词,将被视为额外单词,就像您的代码当前所做的那样)。

    它还允许我们取消单独的方法调用和手动循环代码,正如您所见,这些代码容易出现小错误(我个人建议使用 For 循环而不是 Do Until在这种情况下循环,因为For 循环旨在自动增加索引)。

    Sub Main()
        Console.WriteLine("Sentence Analysis")
        Console.WriteLine()
        Console.WriteLine("Enter a sentence then press 'Enter'")
        Console.WriteLine()
    
        Dim sentence As String
        sentence = Console.ReadLine()
    
        Dim vowel_count As Integer = sentence.Count(Function(c) "aeiou".Contains(Char.ToLower(c)))
        Dim word_count As Integer = sentence.Count(Function(c) " ".Contains(Char.ToLower(c)))
    
        Console.WriteLine("Your sentence contains {0} words.", word_count)
        Console.WriteLine("Your sentence contains {0} vowels.", vowel_count)        
    
        Console.ReadLine()
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多