m0_74474210 2024-05-22 12:07 采纳率: 93.8%
浏览 0

为什么stop那块有异常


 if (receiveResult.contains(",start")||receiveResult.contains(",stop")){
                        if (receiveResult.contains(",start")){
                            //记录当前时间 写数据库
                            //开启一个一次性任务
                            //Toast.makeText(MainActivity.this, "start", Toast.LENGTH_SHORT).show();
                            SimpleDateFormat format=new SimpleDateFormat("dd-HH:mm:ss");
                            Date now=new Date();
                             lastTime1= format.format(now);
                      dataBase.insertData2(lastTime1,null,"",null);
                            task=new TimerTask() {
                                @Override
                                public void run() {
                                    needInsertDB=false;
                                    SimpleDateFormat format1=new SimpleDateFormat("dd-HH:mm:ss");
                                    Date now1=new Date();
                                    String time1= format1.format(now1);
                                    dataBase.updateData2(i,time1,Integer.parseInt(w),lastTime1);
                                    stop=false;
                                }
                            };
                            timer.schedule(task,30*1000);


                        }if (receiveResult.contains(",stop")){
                            //记录重量 如果为0 关闭任务
                            //不为0 记录时间和重量
                            //Toast.makeText(MainActivity.this, "stop", Toast.LENGTH_SHORT).show();
                            SimpleDateFormat format=new SimpleDateFormat("dd-HH:mm:ss");
                            Date now=new Date();
                            String time= format.format(now);
                            i=Integer.parseInt(w);
                            dataBase.updateData2(i,"",null,lastTime1);
                            stop=true;
//                            if (w.equals("0")&&needInsertDB){//30s内
//                                timer.cancel();
//                                timer.purge();
//                                SimpleDateFormat format1=new SimpleDateFormat("dd-HH:mm:ss");
//                                Date now1=new Date();
//                                String time1= format1.format(now1);
//                                dataBase.updateData2(i,time1,Integer.parseInt(w),lastTime1);
//                            }

                        }


                    }
                    if (stop)
                    {
                        if (w.equals("0")&&needInsertDB){//30s内
                            timer.cancel();
                            timer.purge();
                            SimpleDateFormat format1=new SimpleDateFormat("dd-HH:mm:ss");
                            Date now1=new Date();
                            String time1= format1.format(now1);
                            dataBase.updateData2(i,time1,Integer.parseInt(w),lastTime1);
                            stop=false;
                        }
                    }

  • 写回答

2条回答 默认 最新

  • 阿里嘎多学长 2024-05-22 12:07
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    【您想要解决的问题】:您提问的目的是解决在Java代码中,stop 条件判断块出现异常的问题。您希望找出原因并提供一个解决方案。

    【问题出现原因】:

    1. 代码中存在多个 if 语句,但没有使用 elseelse if,这可能导致当 receiveResult 同时包含 ",start"",stop" 时,两个块都会执行。
    2. stop 块中,变量 stop 被设置为 true,但在 if (stop) 块中,如果 w.equals("0") && needInsertDB 条件满足,stop 又被设置为 false。这可能导致状态不一致。
    3. stop 变量在代码中被多次修改,但并没有在所有相关代码块中正确地同步其状态。
    4. needInsertDB 变量的作用域和状态管理不清晰,可能在某些情况下导致逻辑混乱。
    5. 代码中注释掉的部分可能与问题有关,但无法确定其影响,因为没有上下文信息。

    【问题解决方案】:

    1. 确保 stop 变量在所有相关代码块中的状态是一致的。
    2. 使用 else if 结构来避免当 receiveResult 同时包含 ",start"",stop" 时,两个块都执行的问题。
    3. 明确 needInsertDB 变量的作用和状态管理,确保在所有相关代码块中正确使用。
    4. 检查并测试注释掉的代码部分,确定其是否与当前问题有关。

    【提供代码】: 以下是修改后的代码示例,主要修改了 if 语句的结构,以避免同时执行 startstop 块的问题:

    if (receiveResult.contains(",start") || receiveResult.contains(",stop")) {
        if (receiveResult.contains(",start")) {
            // ... 省略start相关的代码 ...
        } else if (receiveResult.contains(",stop")) {
            // ... 省略stop相关的代码 ...
        }
    }
    
    if (stop && w.equals("0") && needInsertDB) {
        // ... 省略stop相关的代码 ...
    }
    

    【代码运行方式】:

    • 运行此代码需要Java开发环境,如JDK。
    • 将修改后的代码放入您的项目中,并确保所有依赖项和环境变量都已正确设置。
    • 通过IDE或命令行编译并运行您的程序。

    【代码预期运行结果】:

    如果receiveResult包含",start",则执行start相关的代码块。
    如果receiveResult包含",stop",则执行stop相关的代码块,但不会同时执行start。
    如果stop为true,并且w为"0"且needInsertDB为true,则执行相关的清理和更新数据库操作。
    

    【推荐相关链接】:

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月22日

悬赏问题

  • ¥15 无法输出helloworld
  • ¥15 高通uboot 打印ubi init err 22
  • ¥20 PDF元数据中的XMP媒体管理属性
  • ¥15 R语言中lasso回归报错
  • ¥15 网站突然不能访问了,上午还好好的
  • ¥15 有没有dl可以帮弄”我去图书馆”秒选道具和积分
  • ¥15 semrush,SEO,内嵌网站,api
  • ¥15 Stata:为什么reghdfe后的因变量没有被发现识别啊
  • ¥15 振荡电路,ADS仿真
  • ¥15 关于#c语言#的问题,请各位专家解答!