Visual Basic如何使用循环按用户输入次数打印语句及代码纠错
代码错误点
- 类型转换缺失:
numberr是整数类型,直接将文本框的字符串格式内容赋值会触发类型不匹配错误,若用户输入非数字内容会直接抛出异常。 - 输出逻辑错误:循环内每次对
lbloutput.Text执行赋值操作会直接覆盖上一轮的内容,最终仅会展示1次目标字符串,无法实现重复输出的效果。 - 转义字符错误:代码中的
&是HTML场景下的转义内容,VB语法中直接使用&做字符串拼接即可。
修正后的完整代码
Public Class Form1 Private Sub cmdLoop_Click(sender As Object, e As EventArgs) Handles cmdLoop.Click Dim newput As String Dim numberr As Integer Dim counter As Integer newput = txtStatement.Text ' 增加输入合法性校验,避免非数字或无效数值报错 If Not Integer.TryParse(TxtRepeatNum.Text, numberr) OrElse numberr < 1 Then MessageBox.Show("请输入大于0的合法重复次数") Exit Sub End If ' 先清空原有输出内容 lbloutput.Text = "" For counter = 1 To numberr ' 使用 &= 实现字符串追加,而非覆盖原有内容 lbloutput.Text &= newput & vbCrLf Next End Sub
简化优化方案
不需要手动写循环也可以实现相同效果,直接调用字符串内置方法即可:
Public Class Form1 Private Sub cmdLoop_Click(sender As Object, e As EventArgs) Handles cmdLoop.Click Dim newput As String = txtStatement.Text Dim numberr As Integer If Not Integer.TryParse(TxtRepeatNum.Text, numberr) OrElse numberr < 1 Then MessageBox.Show("请输入大于0的合法重复次数") Exit Sub End If lbloutput.Text = String.Join(vbCrLf, Enumerable.Repeat(newput, numberr)) End Sub
内容的提问来源于stack exchange,提问作者Fitzgerald Chambwa
相关产品推荐
相关产品推荐

