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;
}
}
为什么stop那块有异常
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- 阿里嘎多学长 2024-05-22 12:07关注
以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:
【您想要解决的问题】:您提问的目的是解决在Java代码中,
stop
条件判断块出现异常的问题。您希望找出原因并提供一个解决方案。【问题出现原因】:
- 代码中存在多个
if
语句,但没有使用else
或else if
,这可能导致当receiveResult
同时包含",start"
和",stop"
时,两个块都会执行。 - 在
stop
块中,变量stop
被设置为true
,但在if (stop)
块中,如果w.equals("0") && needInsertDB
条件满足,stop
又被设置为false
。这可能导致状态不一致。 stop
变量在代码中被多次修改,但并没有在所有相关代码块中正确地同步其状态。needInsertDB
变量的作用域和状态管理不清晰,可能在某些情况下导致逻辑混乱。- 代码中注释掉的部分可能与问题有关,但无法确定其影响,因为没有上下文信息。
【问题解决方案】:
- 确保
stop
变量在所有相关代码块中的状态是一致的。 - 使用
else if
结构来避免当receiveResult
同时包含",start"
和",stop"
时,两个块都执行的问题。 - 明确
needInsertDB
变量的作用和状态管理,确保在所有相关代码块中正确使用。 - 检查并测试注释掉的代码部分,确定其是否与当前问题有关。
【提供代码】: 以下是修改后的代码示例,主要修改了
if
语句的结构,以避免同时执行start
和stop
块的问题: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,则执行相关的清理和更新数据库操作。
【推荐相关链接】:
解决 无用评论 打赏 举报 编辑记录 - 代码中存在多个
悬赏问题
- ¥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语言#的问题,请各位专家解答!