none
新手请教VB6问题 RRS feed

  • 问题

  • 这几天刚开始学VB6,做一个习题时遇到了几个问题,请教如下(可能比较菜, 见笑了)
    要求:随意输入20个数字,显示奇数的个数、偶数的个数和已经输入数字的总和。
    思路:三个文本框:分别用于输入数字(Txt1)、统计奇数(Txt2)、统计偶数(Txt3)和统计总数(Txt4)。
             在Txt1中输入数字并点击“确定”按钮(Cmd1)后程序开始运行,当输入20个数字后不能继续输入。
             代码总共两段,第一段判断奇/偶数并进行统计;第二段对20个总数限制进行控制。
    问题1:第一段中曾使用Select Case如下:
    If IsNumeric(Txt1.Text) Then      '判断输入的是不是数字
        Select Case Val(Txt1.Text)
            Case Val(Txt1.Text) Mod 2 = 0     '如果能被2整除, 说明是偶数
            Txt3.Text = Val(Txt3.Text) + 1     '偶数个数加1
        Case Else
            Txt2.Text = Val(Txt2.Text) + 1     '如果不能, 奇数个数加1
        End Select
        Txt1.Text = ""
        Txt1.SetFocus
        Txt4.Text = Val(Txt4.Text) + 1     '每按一次"确定", 总数个数加1
    Else
        MsgBox "请输入一个数字!", vbExclamation + vbOKOnly, "提示"      '如果输入的不是数字, 提示错误
        Txt1.Text = ""
        Txt1.SetFocus
    End If
    这么写的结果是每次运算只统计奇数,而不统计偶数,请问为什么?后来我换成了If...then,虽然问题解决了,但不明白为什么Select Case行不通。


    问题2:第二段中对20个的总数限制。输入第21个数字时进行提示,同时,三个统计框中的值保持不变。比如“奇数10个,偶数10个,总数20个”,如果此时再输入一个数字,且没有第二段的条件控制,总数总是加1,奇数框和偶数框也会视输入的数字进行加1。为此我写了下面的代码:
    If Val(Txt4.Text) > 20 Then     '判断总数是否已经超过20个
        MsgBox "已经输入了二十个数字!", vbInformation + vbOKOnly, "提示"      '如果已经超过20个,提示错误
            If Val(Txt1.Text) Mod 2 = 0 Then     '如果是偶数
                Txt3.Text = Val(Txt3.Text) - 1      '偶数个数减1, 因为总数已经超过了20个, 不允许继续统计
            Else
                Txt2.Text = Val(Txt2.Text) - 1      '如果不是偶数, 奇数个数减1
            End If
        Txt4.Text = Val(Txt4.Text) - 1              '总数个数减1
    End If

    通过上面的代码,当输入的第21个数字是偶数时,一切如设想一样。但若输入的第21个数字是奇数,问题来了:同样会提示错误,总数也不会变,但奇数的个数仍会加1,且偶数的个数减1。请问这是为什么?正确的代码应该怎么写?谢谢!
    2009年2月25日 4:48

答案

全部回复