我正在尝试编写程序时遇到问题。我曾试图使用一个列表框和一个文本框,但我没有得到重复它只出现一次。我需要知道我做错了什么。这些是指示,我试图弄明白。
编写一个程序,请求用户输入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
答案 0 :(得分:1)
这里的第一个问题是,您实际上并没有在任何有意义的意义上使用num
。 num
可能是您从TextBox
获取的字词,但您根本没有递增它。按照目前的情况,如果用户输入小于20的数字,您的While
循环将永远不会结束,或者如果用户输入的数字大于20,则永远不会执行。
你应该做的是像这样构建Do While循环:
For i As Integer = 0 To Num-1
// do something here
Next
这样,循环将完全执行num
次。请注意,循环是从0开始的。因此,如果你想制作5个循环,你必须将限制设置为&#39; 0到4&#39;。
第二个问题是你根本没有真正使用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
作为For
或{{1}的检查值循环。执行动作甚至意味着什么,例如6.37倍?如果您只是使用它来检查您的计数器是否不大于该值,那么如果计数器是整数,为什么还要使用双? (同样值得一提的是,你应该只使用整数作为计数器值 - 浮点运算对于这些目的来说太难以预测了。)