使用Visual Basic编写星号矩形绘制程序的代码问题求助
问题分析
- 核心逻辑缺失:仅编写了一层控制行数的外层循环,没有嵌套控制列数的内层循环,定义的columns变量全程未被调用,列数配置完全没有生效,导致每行只能输出1个星号,无法匹配自定义列数
- 健壮性不足:直接将文本框的字符串类型Text属性赋值给Integer类型变量,存在类型不匹配风险,用户输入非数字内容时会触发运行错误
修复方案
需要在外层的行循环内部,嵌套一层列循环,每行输出指定数量的星号后再换行。同时补充输入校验逻辑提高代码健壮性。
修复后的代码如下:
Private Sub cmdProcess_Click(sender As Object, e As EventArgs) Handles cmdProcess.Click Dim rows As Integer Dim columns As Integer ' 输入合法性校验 If Not Integer.TryParse(txtRow.Text, rows) OrElse Not Integer.TryParse(txtColumn.Text, columns) Then lbloutput.Text = "请输入有效的数字作为行/列数" Return End If If rows <= 0 OrElse columns <= 0 Then lbloutput.Text = "行/列数必须为正整数" Return End If lbloutput.Text = "" ' 外层循环控制行数 For i = 1 To rows ' 内层循环控制当前行的星号数量(列数) For j = 1 To columns lbloutput.Text &= "*" Next ' 单行星号输出完成后再统一换行 lbloutput.Text &= vbCrLf Next End Sub
内容的提问来源于stack exchange,提问作者Fitzgerald Chambwa
相关产品推荐
相关产品推荐

