2014-11-02 70 views
0

我遇到了我正在嘗試編寫的程序的問題。我試圖使用一個列表框和一個文本框,但我沒有得到這個詞重複它只出現一次。我需要知道我做錯了什麼。這些是說明,我正試圖弄清楚。如何使用循環在vb.net中重複一個單詞

編寫一個程序,要求用戶輸入1到20之間的正整數和一個單詞。程序將首先使用循環來驗證整數輸入(以powerpoint中的示例2爲例),然後使用另一個循環顯示與整數輸入相同次數的單詞。 例如,如果用戶輸入5和「hello」,結果將顯示以下內容: hellohellohellohellohello 提示:在第二個循環中,在循環的每次迭代中將該單詞追加到結果中。例如,如果輸入是5,循環將運行5次,並且在循環的每次迭代中,該單詞重複一次。所以如果循環運行5次,該單詞重複5次。

這是我到目前爲止有:

Private Sub btnEnter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEnter.Click 
    Dim num As Double = 0 
    Dim Word As String = "" 
    Dim result As String 

    Word = txtWord.Text 
    num = CDbl(txtNumber.Text) 
    result = Word(CInt(num)) 


    Do While num <= 20 
     lstResults.Items.Add(result) 
    Loop 

    txtResult.Text = result 

End Sub 

回答

1

這裏的第一個問題是,您實際上並不在任何意義上使用numnum大概是你從TextBox得到的這個詞,但你並沒有增加它。就目前而言,如果用戶輸入的數字少於20,那麼您的While循環不會結束,或者如果用戶輸入的數字大於20,則永遠不會執行。

您應該做的是構建您的做while循環像這樣:

For i As Integer = 0 To Num-1 
    // do something here 
Next 

這樣,循環將正好執行num次。注意一個循環是基於0的。所以如果你想做5個循環,你必須將限制設置爲'0到4'。

第二個問題是你根本沒有使用lstResults的內容。如果你正在試圖做的一切是複製串Num倍,這樣做的簡單的(有點非高性能)的方式是隻將字符串:

Dim str As String = "" 
For i As Integer = 0 To Num-1 
    str += Word 
Next 

txtResult.Text = str 

連接字符串需要一個新的創造所以如果性能是一個問題,你應該使用StringBuilder而不是String,然後在完成構建之後在StringBuilder上調用ToString()。

我並不確定你想要的是什麼,但result的定義(result = Word(CInt(num))),但無論它不起作用。 Word是一個String對象,而不是函數,因此您不能調用Word()來完成任何操作。即使你可以,你爲什麼會

最後,你不應該鑄造num到CDbl - 你不應該使用Double作爲一個ForWhile迴路校驗值。它甚至意味着什麼行動,例如6.37次?如果你只是用它來檢查你的計數器是否不大於該值,那麼爲什麼還要使用雙精度計數器(如果計數器是整數)呢? (提到你應該只使用整數來計算你的計數器值 - 浮點算術對於這些目的來說太不可預測。)

+0

這是非常有幫助的,這是非常有用的。我很感謝你向我詳細解釋這一點。我現在開始瞭解如何使用它。 – 2014-11-02 06:45:29

+0

謝謝,我真的很感激。 – 2014-11-02 07:46:04