首页 新闻 赞助 找找看

为什么我点击按钮第一次没有异常,再点击一次就出现异常,难道if语句不管用?

0
[已解决问题] 解决于 2018-01-18 09:04

亲爱的朋友们

     哈喽哈喽

    我碰到一个问题啊,我怀疑if语句有毛病。

    你看,我第一次给count 赋值0.点击按钮一次,她就成了1

    然后第2次扫描时,count就是1,不应该再执行if下面的语句了,可是程序还是执行,

   这是怎么回事呀?气死我了。

   

绿绿山水的主页 绿绿山水 | 菜鸟二级 | 园豆:248
提问于:2018-01-16 10:48
< >
分享
最佳答案
1

把 

int count=0;

 放到方法外部。

或者

if (serialPort1.IsOpen)

{

//端口已经打开了。

}

else

{

serialPort1.Open();

}

 

            
奖励园豆:5
junio.cn | 菜鸟二级 |园豆:445 | 2018-01-16 14:21

我把代码试过了,还是不行,第一次OK,第2次就报警端口已打开。

绿绿山水 | 园豆:248 (菜鸟二级) | 2018-01-17 09:54

@绿绿山水: serialPort1.IsOpen 可以判断端口是否已经打开了。

junio.cn | 园豆:445 (菜鸟二级) | 2018-01-23 15:47
其他回答(7)
0

 然后第2次扫描时,count就是1
你debug看看count什么时候变成1的。

Daniel Cai | 园豆:10424 (专家六级) | 2018-01-16 11:06

debug 是什么意思?》如何进行debug?

 

支持(0) 反对(0) 绿绿山水 | 园豆:248 (菜鸟二级) | 2018-01-17 09:53

@绿绿山水: 代码上加个断点,再F5跑啊

支持(0) 反对(0) Daniel Cai | 园豆:10424 (专家六级) | 2018-01-17 11:01

@Daniel Cai: 谢谢。就是局部变量的问题了,不过我现在不知道如何改成全局变量。

支持(0) 反对(0) 绿绿山水 | 园豆:248 (菜鸟二级) | 2018-01-17 14:48
0

count是局部变量,每次点你都清零了。

清海扬波 | 园豆:825 (小虾三级) | 2018-01-16 11:32

那我该如何改正代码呢?把代码写出来让我测试测试哦。

支持(0) 反对(0) 绿绿山水 | 园豆:248 (菜鸟二级) | 2018-01-16 17:21
1

if语句没毛病,你不是第一次给count赋值0,你是每次都给count赋值0,count永远不会为1,就如你对向你表白的人说:if(山无棱天地合) 我答应你;

dudu | 园豆:31094 (高人七级) | 2018-01-16 11:46

谢谢勇哥,那我应该如何改正代码呢?

把代码写出来,让我 测试测试哈。

支持(0) 反对(0) 绿绿山水 | 园豆:248 (菜鸟二级) | 2018-01-16 17:20
1

 把coun缓存起来。

string key = "count";
            int count=0;
            if(Session[key]!=null)
            {
                count = Convert.ToInt32(Session[key]);
            }
            if(count==0)
            {
               serialPort1.Open();
                Session[key] = 1;
            }
            else
            {
                Session[key] = 2;
            }
DZCMS | 园豆:5 (初学一级) | 2018-01-16 12:54

Session 没有定义哦。

支持(0) 反对(0) 绿绿山水 | 园豆:248 (菜鸟二级) | 2018-01-17 10:52

@绿绿山水: 哪是你缺少引用。

支持(0) 反对(0) DZCMS | 园豆:5 (初学一级) | 2018-01-18 16:03

@QYCMS: 那应该怎么引用呢?

支持(0) 反对(0) 绿绿山水 | 园豆:248 (菜鸟二级) | 2018-01-18 17:18
0

if条件永远成立。

这叫局部变量

西漠以西 | 园豆:1675 (小虾三级) | 2018-01-16 16:09

那我应该如何改正代码呢?

支持(0) 反对(0) 绿绿山水 | 园豆:248 (菜鸟二级) | 2018-01-16 17:22
0

每次点击按钮,count都是0,但你上一次点击端口已经打开,并没有进行关闭,所以自然就出问题了

把int count = 0放在button3_Click函数外就可以了

Arthurian | 园豆:1123 (小虾三级) | 2018-01-17 12:29

你应该去看看有关变量作用域的文章,理解一下局部变量的使用

支持(0) 反对(0) Arthurian | 园豆:1123 (小虾三级) | 2018-01-17 12:31

我已经试过了,把int count = 0 放在button2 click 事件之外,但是呢,再点击按钮,还是会报警:

如下图所示:

支持(0) 反对(0) 绿绿山水 | 园豆:248 (菜鸟二级) | 2018-01-17 15:02

@绿绿山水: 首先请明确你刚开始那个异常是无效操作异常,这个是越权异常,这个异常,你只给这几行代码没办法给你解决

支持(0) 反对(0) Arthurian | 园豆:1123 (小虾三级) | 2018-01-17 20:37

@绿绿山水: 出现异常,要根据异常类型在相关代码中去找具体出问题的代码,很多时候这条语句报异常其实是前边执行的语句的问题,要思考程序的逻辑并打上断点,进行调试,单步执行查找具体原因

支持(0) 反对(0) Arthurian | 园豆:1123 (小虾三级) | 2018-01-17 20:40
0

解决了咩,要是没有,我想看看

一首歌听到忘世 | 园豆:138 (初学一级) | 2018-01-17 13:06

没有解决呢

支持(0) 反对(0) 绿绿山水 | 园豆:248 (菜鸟二级) | 2018-01-17 14:49

@绿绿山水:   百度网盘  一首歌听到断带,看看代码?

支持(0) 反对(0) 一首歌听到忘世 | 园豆:138 (初学一级) | 2018-01-17 14:51
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册