public void checkRoutePlanItems(List<BNRoutePlanItem> mRoutePlanItems) { if (mRoutePlanItems == null || mRoutePlanItems.size() < 3 || mRoutePlanItems.get(0) == null || mRoutePlanItems.get(1) == null || mRoutePlanItems.get(2) == null) { } } 以上代码提示 'if' statement has empty body
时间: 2023-11-27 13:51:38 浏览: 56
这个警告是因为你的 if 语句没有执行任何操作,也就是 if 语句后面的花括号中没有任何代码。为了避免这个警告,你可以在 if 语句后面加上一行注释,说明这个 if 语句是有意留空的,比如:
```
public void checkRoutePlanItems(List<BNRoutePlanItem> mRoutePlanItems) {
if (mRoutePlanItems == null || mRoutePlanItems.size() < 3 || mRoutePlanItems.get(0) == null || mRoutePlanItems.get(1) == null || mRoutePlanItems.get(2) == null) {
// do nothing here intentionally
}
}
```
如果你的确需要在 if 语句中执行一些代码,那么你需要在花括号中添加相应的代码。
相关问题
public void checkRoutePlanItemsValidity(List<BNRoutePlanItem> mRoutePlanItems) { if (mRoutePlanItems == null || mRoutePlanItems.size() < 1 || mRoutePlanItems.get(0) == null) { Log.d("TAGAA", "checkRoutePlanItemsValidity: 111"); return; } if (mRoutePlanItems.size() < 2 || mRoutePlanItems.get(1) == null) { Log.d("TAGAA", "checkRoutePlanItemsValidity: 222"); return; } if (mRoutePlanItems.size() < 3 || mRoutePlanItems.get(2) == null) { Log.d("TAGAA", "checkRoutePlanItemsValidity: 333"); return; } } 这个方法分别在三个点击事件中在调用,点击第二个数据,为空时,执行的还是第一个判断条件,导致 mRouteList.addAll(mRouteDetails.get(1)); mResultAdapter.notifyItemChanged(1); 数组下标越界
这个问题的原因是在第一个判断条件中只判断了 mRoutePlanItems 是否为空或者只有一个元素,而没有判断 mRoutePlanItems.get(0) 是否为空。因此,当 mRoutePlanItems.get(0) 为空时,就会进入第一个判断条件并返回,导致后续的判断条件没有执行。
为了解决这个问题,你需要在第一个判断条件中增加对 mRoutePlanItems.get(0) 是否为空的判断。可以修改代码如下:
```
public void checkRoutePlanItemsValidity(List<BNRoutePlanItem> mRoutePlanItems) {
if (mRoutePlanItems == null || mRoutePlanItems.size() < 1 || mRoutePlanItems.get(0) == null) {
Log.d("TAGAA", "checkRoutePlanItemsValidity: 111");
return;
}
if (mRoutePlanItems.size() < 2 || mRoutePlanItems.get(1) == null) {
Log.d("TAGAA", "checkRoutePlanItemsValidity: 222");
return;
}
if (mRoutePlanItems.size() < 3 || mRoutePlanItems.get(2) == null) {
Log.d("TAGAA", "checkRoutePlanItemsValidity: 333");
return;
}
}
```
这样就可以保证在 mRoutePlanItems.get(0) 为空时会直接返回,不会进入后续的判断条件。
数据为空时点击 报错 看代码 case R.id.route_1: checkRoutePlanItemsValidity(mRoutePlanItems); mLayoutTab0.setSelected(false); mLayoutTab1.setSelected(true); mLayoutTab2.setSelected(false); interruptCountdown(); BaiduNaviManagerFactory.getRouteResultManager().selectRoute(1); BaiduNaviManagerFactory.getRouteResultManager().fullView(); mRouteList.clear(); mRouteList.addAll(mRouteDetails.get(1)); mResultAdapter.notifyItemChanged(1); break; 其中checkRoutePlanItemsValidity(mRoutePlanItems);具体代码如下: public void checkRoutePlanItemsValidity(List<BNRoutePlanItem> mRoutePlanItems) { if (mRoutePlanItems == null || mRoutePlanItems.size() < 1 || mRoutePlanItems.get(0) == null) { Log.d("TAGAA", "checkRoutePlanItemsValidity: 111"); return; } if (mRoutePlanItems.size() < 2 || mRoutePlanItems.get(1) == null) { Log.d("TAGAA", "checkRoutePlanItemsValidity: 222"); return; } if (mRoutePlanItems.size() < 3 || mRoutePlanItems.get(2) == null) { Log.d("TAGAA", "checkRoutePlanItemsValidity: 333"); return; } } 帮我修改一下
可以在方法内部加入一个判断,当传入的 mRoutePlanItems 为空时直接返回,避免空指针异常。修改后的代码如下:
```
public void checkRoutePlanItemsValidity(List<BNRoutePlanItem> mRoutePlanItems) {
if (mRoutePlanItems == null || mRoutePlanItems.size() < 1 || mRoutePlanItems.get(0) == null) {
Log.d("TAGAA", "checkRoutePlanItemsValidity: 111");
return;
}
if (mRoutePlanItems.size() < 2 || mRoutePlanItems.get(1) == null) {
Log.d("TAGAA", "checkRoutePlanItemsValidity: 222");
return;
}
if (mRoutePlanItems.size() < 3 || mRoutePlanItems.get(2) == null) {
Log.d("TAGAA", "checkRoutePlanItemsValidity: 333");
return;
}
// 添加判断,当传入的 mRoutePlanItems 为空时直接返回
if (mRoutePlanItems.isEmpty()) {
Log.d("TAGAA", "checkRoutePlanItemsValidity: mRoutePlanItems is empty");
return;
}
}
```
阅读全文