2013-07-06 2 views
1

다음 하위 버전이 있습니다. 그것은 사용자가 입력하는 텍스트 상자에서 입력을 가져 와서 각 문자를 특정 숫자 값으로 대체하고 각 단어의 합계를 표시 한 다음 전체 입력의 합계를 표시한다는 것입니다. 예를 들어, 사용자 유형 금주 모임 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

관련 문제