java - If else 循环跳过 if 子句 [if(2 > 1) ] 并直接移动到 else 子句中的死代码。gRPC 实例化
问题描述
编辑:找到了如果循环被更改,代码仍在执行的原因。如果对项目中的其他文件进行了更改,我没有意识到必须重新启动服务器。循环的原始问题仍然存在。我认为原因是以下行,因为我的语法不正确或在此行到达之前错误地分配了变量。
if(CapacityService.(CapacityService.MaleWC().getPopulation() >= CapacityService.MaleWC().getCapacity())
我正处于 gRPC 项目的最后阶段,我不知道这个 rpc 出了什么问题。我正在使用 Bloom 测试 RPC,它不断地执行最后一个子句并跳过第一个子句。曾认为这是一个 gRPC 问题,但经过大量编辑后,我尝试将循环更改为保证为真,以确保它是可执行的并且它继续跳过它。
编辑:
我相对较新,所以我确信我做出了一些糟糕的设计选择,但我看不到任何灾难性的坏事。项目是用 Maven 创建的,物有所值。
编辑。我试图减少代码以更容易看到任何问题
@SuppressWarnings("static-access")
@Override
public void mWClock(targetRoom request, StreamObserver<lockStatus> responseObserver) {
int key = request.getTarget();
int trigger = 0;
if (key == 0) {
do {
CapacityService.MaleWC().newBuilder()
.setPopulation(randomInt(5));
try {
Thread.sleep(30000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
}
//if(2<1)
if(CapacityService.(CapacityService.MaleWC().getPopulation() >= CapacityService.MaleWC().getCapacity()) {
CapacityService.MaleWC().newBuilder()
.setLock(true);
trigger++;
//
String result1 = "Male Bathroom is currently at or over capacity, please wait";
lockStatus response = lockStatus.newBuilder()
.setStatus(result1)
.setSpaces(0)
.build();
responseObserver.onNext(response);
try {
Thread.sleep(30000);Just to delay returns and simulate movement.
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}catch (OutOfMemoryError e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
CapacityService.MaleWC().newBuilder()
.setPopulation(randomInt(3));//To reduce it below capacity so the loop continues at while loop
}else {
//THE CODE THAT EXECUTES
}
//end of do loop
}while(trigger < 3000);
responseObserver.onCompleted();
}else {
//failure, wrong number entered. TO DO
responseObserver.onCompleted();
}
}
MaleWC 对象是来自不同服务原型的消息,在此处导入并在顶部实例化。可能需要注意的是,我无法使用 MWClock 服务将创建 Room 消息的 proto 文件导入到 proto 文件中,但我不知道这是否会影响任何事情。我也不太确定静态访问警告是否会导致问题
@SuppressWarnings("static-access")
@Override
public static Room MaleWC() {
return Room.newBuilder()
.setCapacity(3)
.setPopulation(0)
.setLock(false)
.build();
}
据我所知,服务器肯定在工作。它只是一直跳到 else 子句。任何人都可以解释一下吗?如果需要,可以共享服务的 proto 文件,但我猜 proto 很好,因为它从 else 语句返回正确的内容,除非问题是由前面提到的导入 snaffoo 引起的。
解决方案
推荐阅读
- f# - 如何在 F# 中异步下载网页并捕获错误
- git - git reset --hard 每次推送后
- python - 树视图偏离一列?
- chatbot - 聊天机器人 IBM WATSON 在 MSN 中获取 facebook 名称
- php - 列为空时不匹配
- mysql - MySQL Workbench 报告 ERROR 1822: Failed to add the foreign key constraint。缺少约束索引
- python - 如何使用 matplot lib 绘制日期与时间的大型数据集
- javascript - Bootstrap Modal 没有正确淡入
- javascript - Vuetify 密码验证包括特殊字符、大写字母、数字和最小长度 6 个字符
- c - 给出奇怪行为的 C 结构数组