2013-07-06 32 views
1

我有以下的下面。它所做的是從用戶輸入的文本框輸入,用特定的數值替換每個字母,顯示每個單詞的總數,然後顯示整個輸入的總數。例如,如果用戶鍵入AA BBB即,在txtbox5輸出:有條件地退出或繼續vb.net中的循環

aa = 40 
bbb = 90 
e = 40 
Total 170 

這工作正常,如果用戶輸入一個長句。所以我想以同樣的方式分別計算每個句子,句子的分隔符可以是句號或逗號。如果用戶鍵入aa bbb。 ff ee。輸出應該爲

aa = 40 
ccc = 90 
Total for the 1st sentence = 120 
ff = 100 
ee = 80 
Total for the 2nd sentence = 180 
and so forth 

Private Sub Calculate(ByVal input As String) 
    Dim total As Integer = 0 
    Dim wordTotal As Integer 
    Dim dicLetters As New Dictionary(Of Char, Integer) 

    dicLetters.Add("A", 20) 
    dicLetters.Add("B", 30) 
    dicLetters.Add("E", 40) 
    dicLetters.Add("F", 50) 

    Dim charValue As Integer 

    For Each word As String In input.Split(New Char() {" "}) 

     wordTotal = 0 

     For Each character As Char In word 

      wordTotal += If(dicLetters.TryGetValue(character, charValue) = _ 
      True, dicLetters(character), 0) 
     Next 

     total += wordTotal 

     txtBox5.Text += word.PadRight(12) + " = " + _ 
     wordTotal.ToString().PadLeft(5) + vbNewLine 
    Next 

    txtBox5.Text += "Total:".PadRight(12) + " = " + _ 
    total.ToString().PadLeft(5) 
End Sub 

回答

2

使用Split方法創建一個句子數組。它會接受一系列分隔符。遍歷數組並將每個句子和句子的索引傳遞給子例程。在你的子程序中添加一個整數參數作爲句號,並改變輸出字符串。

事情是這樣的:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    Dim Sentences() As String = TextBox1.Text.Split({","c,"."c}) 
    For I = 0 to Sentences.Count-1 
     Calculate(Sentences(I), I+1) 
    Next 
End Sub 

Private Sub Calculate(ByVal input As String, ByVal index As Integer) 
    Dim total As Integer = 0 
    Dim wordTotal As Integer 
    Dim dicLetters As New Dictionary(Of Char, Integer) 

    dicLetters.Add("A", 20) 
    dicLetters.Add("B", 30) 
    dicLetters.Add("E", 40) 
    dicLetters.Add("F", 50) 

    Dim charValue As Integer 

    For Each word As String In input.Split(New Char() {" "}) 

     wordTotal = 0 

     For Each character As Char In word 

      wordTotal += If(dicLetters.TryGetValue(character, charValue) = _ 
      True, dicLetters(character), 0) 
     Next 

     total += wordTotal 

     txtBox5.Text += word.PadRight(12) + " = " + _ 
     wordTotal.ToString().PadLeft(5) + vbNewLine 
    Next 

    txtBox5.Text += "Total for sentence " + index.ToString +" :" + " = " + _ 
    total.ToString().PadLeft(5) 
End Sub 
+0

謝謝!這很好,但我如何顯示所有單詞或句子的最終總數? – user2536008

+0

如果您指的是每個句子中所有單詞的總數,請使用類級別變量來保存總計。在計算例程的末尾添加每個總數,然後在按鈕點擊例程中的for循環後面顯示它。 – tinstaafl