| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1492 人关注过本帖
标题:有哪位指教一下我的逻辑错误
只看楼主 加入收藏
dzy123
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:379
专家分:820
注 册:2013-4-18
结帖率:82%
收藏
已结贴  问题点数:20 回复次数:3 
有哪位指教一下我的逻辑错误
Private Sub Command1_Click(Index As Integer)
 Select Case Index
   Case 0
     Text1.Text = Text1.Text & "1"
   Case 1
     Text1.Text = Text1.Text & "2"
   Case 2
     Text1.Text = Text1.Text & "3"
   Case 3
    Text1.Text = Text1.Text & "4"
   Case 4
     If sum <> "" Then
     Text1.Text = Val(sum) + Val(Text1.Text)
    Else
     sum = Text1.Text
     Text1.Text = ""
    End If
   End Select
End Sub
想实现连加始终要多单击一次加号键,请问一下如何改正(case 4代表+键)
搜索更多相关主题的帖子: 如何 
2016-05-11 15:43
xiangyue0510
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:86
帖 子:939
专家分:5244
注 册:2015-8-10
收藏
得分:10 
虽然不清楚你是哪个按钮来实现连加,按照你的代码只有case 4代表+键执行了计算。
我之前做过一个计算器的练习,是和一般计算器一样的, 1 + 1, 一直按=, 每次+1。(我们那个时候拿这个比手速,无聊吧
我是这样实现的
控件(数组)
1~9: CommandNum     数字按钮
+-*/: CommandOpr    运算符按钮
= : CommandEqual    求解按钮
全局变量声明
程序代码:
Dim  Val1, Val2 as single '第一、二运算数
Dim OperStr as integer    '运算符,index=0~3分别为+ - * /
Dim NewNum as boolean    '是否新的输入
Dim FinishOpr            '是否计算完成

全局变量初始化,启动时或者按下CE之后
程序代码:
OperStr =1    ' 
NewNum =True    '
FinishOpr=True


下面部分代码用中文写了,意思你明白就好
点击数字按钮
程序代码:
If NewNum=True then 

 TextNum.text=TextNum.text & (Index+1) '当显示的是上次计算结果时,输入的是新数字
 NewNum=false  '
else 

 TextNum.text=TextNum.text & (Index+1)
End if 


点击运算符按钮
程序代码:

if trim(TextNum.text) ="" then Exist sub  '输入不为空的时候执行, 为空的时候不执行任何
if NewNum then Exist sub  '避免连续按,如1++

if FinishOpr=true then   ' 前面没有未完成的运算,如按1  按+, 按下+ 之后,
 val1=csng(TextNum.text)   '输入传递给第一运算数
 OperStr=index      '保存运算符号
 FinishOpr=false   ' 
Elseif  FinishOpr=false then   ' 前面有未完成的运算,如按1  按+, 按1  按+, 第二次按下+ 室,前面有1+1了,必须先做一个计算
  val2=csng(TextNum.text)   '输入传递给第2运算数 
  TextNum.text=FunctionOper(val1,val2,OperStr)  ’ 根据之前的输入和运算符计算,并显示
  val1=csng(TextNum.text)   '计算结果传递给第一运算数
  OperNum=1
End if

 NewNum=True        ' 按下任意运算符之后,再按数字按钮就是新的数字


等于按钮
程序代码:
  if  newnum then   '如果显示的是上次计算的额结果
    ’沿用原来的Val1, val2相加, 按1  按+, 按1, 一直按=  就是1+1+1+1+1+1+1+1的效果
  Elseif  newnum =false then '如果显示的是手动输入的数字
   val2=csng(TextNum.text)   '输入传递给第2运算数
  End if   
   TextNum.text=FunctionOper(val1,val2,OperStr)  ’ 



FunctionOper 这个就简单了,不用我写了吧
2016-05-11 20:10
xiangyue0510
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:86
帖 子:939
专家分:5244
注 册:2015-8-10
收藏
得分:0 
很久了,可能有点逻辑错误,你最好画一个流程图,这样一定不会错了
2016-05-11 20:12
vb学
Rank: 2
等 级:论坛游民
帖 子:13
专家分:10
注 册:2016-5-16
收藏
得分:10 
回复 3楼 xiangyue0510

我贼拉拉的爱谁???我也不知道
2016-05-17 09:50
快速回复:有哪位指教一下我的逻辑错误
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032357 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved