Member 12725211 Ответов: 3

Помочь мне с этой проблемой? Я не могу найти никаких гласных


Module Module1
    Dim no As Integer
    Public Class text
        Private s As String

        Public Sub vowels()
            Dim l, i, number As Integer
            no = 0
            Console.WriteLine("type the text")
            s = Console.ReadLine()
            l = Len(s)
            Do While i < l

                If s(i) = "a" Then
                ElseIf s(i) = "A" Then
                ElseIf s(i) = "e" Then
                ElseIf s(i) = "E" Then
                ElseIf s(i) = "i" Then
                ElseIf s(i) = "I" Then
                ElseIf s(i) = "o" Then
                ElseIf s(i) = "O" Then
                ElseIf s(i) = "U" Then
                ElseIf s(i) = "u" Then
                    no = no + 1
                End If
                i = i + 1
            Loop
            number = no
            Console.WriteLine("The no of vowels is {0}", number)

        End Sub

            
    End Class
    Public Sub Main()
        Dim a As New text
        a.vowels()


        Console.ReadKey()
    End Sub

End Module


Что я уже пробовал:

я пробовал его на своем компьютере, но не получил его точно

NotPolitcallyCorrect

Не понял, что именно? Пробовал "это"? Что такое "это"? Просто сбросить свой неформатированный, трудночитаемый код в публикацию - это не задать вопрос или описать проблему.

Dominic Burford

Пройдитесь по коду в отладчике и посмотрите, в чем проблема. Беглый взгляд на код показывает, что вы увеличиваете свой счетчик "нет" только тогда, когда буква "u" совпадает. Я предполагаю, что это не то, что вы хотели. Кроме того, подумайте о том, чтобы переписать это как оператор CASE, а не кучу операторов If / ElseIf.

3 Ответов

Рейтинг:
2

Garth J Lancaster

этот

If s(i) = "a" Then
                ElseIf s(i) = "A" Then
                ElseIf s(i) = "e" Then
                ElseIf s(i) = "E" Then
                ElseIf s(i) = "i" Then
                ElseIf s(i) = "I" Then
                ElseIf s(i) = "o" Then
                ElseIf s(i) = "O" Then
                ElseIf s(i) = "U" Then
                ElseIf s(i) = "u" Then
                    no = no + 1
                End If


это действительно ужасно !

не должен vb.net быть

если (какое-то условие), то (сделайте что-нибудь)
elseif (какое-то другое условие), то (сделайте что-нибудь)
....

если бы вы научились использовать отладчик, то, скорее всего, увидели бы, в чем заключается ваша проблема(проблемы)

как насчет лучшего способа ?

объявите постоянную строку (это не относится ни к одному конкретному языку)

constant string vowels = "AaEeIiOoUu";


а затем в вашем цикле сделайте такой тест, как

if vowels.contains(s[i]) then no = no + 1;


есть лучшее расширение к тому, что я вам показал, кстати, вдоль линий :-

constant string vowels = "AEIOU";


if vowels.contains(uppercase(s[i])) then no = no + 1;


Я оставляю это на ваше усмотрение, чтобы правильно закодировать любой из них VB.NET


Member 12725211

я не мог объявить константу .

Garth J Lancaster

его домашнее задание - если вы ожидаете, что я сделаю все это за вас, ну, этого не произойдет - просто google 'vb.net строковая константа", например, чтобы точно узнать, как это сделать ....

Member 12725211

теперь я должен ее решить....

Member 12725211

я использую простой случай выбора ...хотя Спасибо за усилия...

Рейтинг:
0

Dave Kreskowiak

Ваш код будет считать только строчные буквы "u". Наличие пустого предложения "Then" означает, что код ничего не делает, если условие истинно. Вот что на самом деле делает ваш код:

If s(i) = "a" Then
    ' Do nothing
ElseIf s(i) = "A" Then
    ' Do nothing
ElseIf s(i) = "e" Then
    ' Do nothing
ElseIf s(i) = "E" Then
    ' Do nothing
ElseIf s(i) = "i" Then
    ' Do nothing
ElseIf s(i) = "I" Then
    ' Do nothing
ElseIf s(i) = "o" Then
    ' Do nothing
ElseIf s(i) = "O" Then
    ' Do nothing
ElseIf s(i) = "U" Then
    ' Do nothing
ElseIf s(i) = "u" Then
    no = no + 1
End If


Вы же понимаете, что существуют сравнения строк, которые игнорируют регистр, не так ли? Есть и другие, которые могут искать строку (или символ) в другой строке и сказать вам, есть ли она там?

Вы можете выполнить это задание в одном операторе IF.


Рейтинг:
0

Patrice T

If s(i) = "a" Then ' Count a vowel here
ElseIf s(i) = "A" Then ' Count a vowel here
ElseIf s(i) = "e" Then ' Count a vowel here
ElseIf s(i) = "E" Then ' Count a vowel here
ElseIf s(i) = "i" Then ' Count a vowel here
ElseIf s(i) = "I" Then ' Count a vowel here
ElseIf s(i) = "o" Then ' Count a vowel here
ElseIf s(i) = "O" Then ' Count a vowel here
ElseIf s(i) = "U" Then ' Count a vowel here
ElseIf s(i) = "u" Then no = no + 1
End If

Правильно только "у".