2015-07-06 81 views
-4
 For I = 1 To Len(InputString) 
     If InStr(InputString, Mid(Vowels, I, 1)) Then 
      nVowels = nVowels + 1 
     End If 
    Next 

我是新的,盡我所能去學習這門語言:)感謝提前:) 不管怎麼說,這是我的代碼的一部分重要的地方了給定字符串中的元音數量。這是什麼代碼意味着什麼?(VB.NET)

+1

哪條線你指的是? ['Len'](https://msdn.microsoft.com/en-us/library/dxsw58z6(v = vs.90).aspx),['InStr'](https://msdn.microsoft.com/ en-us/library/8460tsh1(v = vs.90).aspx)和['Mid'](https://msdn.microsoft.com/en-us/library/05e63829(v = vs.90).aspx )都完全記錄在案... –

+2

Len,InStr和Mid,所有這些都是在vb.net中提供的VB6兼容方法,考慮不要使用它們。由於您正在學習vb.net,請參閱更好的示例。 –

+0

檢查'InStr'文檔。我想你的意思是'InStr(元音,Mid(InputString,I,1))'。更好的是,採取Sarvesh的建議並閱讀['Contains'](https://msdn.microsoft.com/en-us/library/dy85x1sa(v = vs.110).aspx) – Fruitbat

回答

1

你的代碼是很好,除了一個小錯誤:你交換InStr函數的參數..

假設你有

Dim Vowels As String 
Vowels = "aeiou" 

您當前的代碼將不會像"Sun"單詞工作。這是爲什麼:

1-您的循環將被初始化爲1至3(「太陽報」的長度)來算

2 - 你檢查,如果「太陽報」包含元音的第一個字符(一)。 3-檢查「Sun」是否包含元音(e)的下一個字符。 4)檢查「Sun」是否包含元音(i)的下一個字符。

5-循環出口(i = 3)。

所以邏輯需要重新編寫,以解決其他方式:

For I = 1 To Len(InputString) 
     If InStr(UCase(Vowels), Mid(UCase(InputString), I, 1)) Then 
      nVowels = nVowels + 1 
     End If 
Next