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 11:51:38 浏览: 34
这个警告是因为你的 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;
}
}
```
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
package ece448.iot_sim; import java.util.List; import java.util.Map; import java.util.TreeMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ece448.iot_sim.http_server.RequestHandler; public class HTTPCommands implements RequestHandler { // Use a map so we can search plugs by name. private final TreeMap<String, PlugSim> plugs = new TreeMap<>(); public HTTPCommands(List plugs) { for (PlugSim plug: plugs) { this.plugs.put(plug.getName(), plug); } } @Override public String handleGet(String path, Map<String, String> params) { // list all: / // do switch: /plugName?action=on|off|toggle // just report: /plugName logger.info("HTTPCmd {}: {}", path, params); if (path.equals("/")) { return listPlugs(); } PlugSim plug = plugs.get(path.substring(1)); if (plug == null) return null; // no such plug String action = params.get("action"); if (action == null) return report(plug); // P2: add your code here, modify the next line if necessary if("toggle".equals(action)){ plug.toggle(); return report(plug); }else if("on".equals(action)){ plug.switchOn(); return report(plug); }else if("off".equals(action)){ plug.switchOff(); return report(plug); } return "<html><body></body></html>"; } protected String listPlugs() { StringBuilder sb = new StringBuilder(); sb.append("<html><body>"); for (String plugName: plugs.keySet()) { sb.append(String.format("%s", plugName, plugName)); } sb.append("</body></html>"); return sb.toString(); } protected String report(PlugSim plug) { String name = plug.getName(); return String.format("<html><body>" +"Plug %s is %s." +"Power reading is %.3f." +"Switch On" +"Switch Off" +"Toggle" +"</body></html>", name, plug.isOn()? "on": "off", plug.getPower(), name, name, name); }如何对上述代码全部功能进行测试呢?请提供测试代码。
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)