If语句else语句失败



我有一个黑莓应用程序,它基本上会对我输入的信息进行选择查询,所以如果我输入"5",它会进行select * from table where id=5,这样我就能返回结果。然而,该子句的else语句应该返回"未找到结果"。张贴在下面的代码:

public void onResponse(String data, int code) {
    final Vector vehicleInfo = jasonParser.parseVechicleResponse(data);
    if(vehicleInfo.size() > 0 ){
        UiApplication.getUiApplication().invokeLater(new Runnable() {
            public void run() {
                removeLoader();
                UiApplication.getUiApplication().pushScreen(new VehicleSearchResultScreen(etfVehicleInfo.getText(),vehicleInfo));
            }
        });
    }else{
        UiApplication.getUiApplication().invokeLater(new Runnable() {
            public void run() {
                removeLoader();
                Dialog.alert("No Results found.");
            }
        });
    }
}

此代码的问题在于,如果vehicleinfo.size() = 0-this-else语句不运行。运行的代码是下面发布的代码,这是我的错误代码。它应该在发生收集错误时被调用。因此,基本上,当没有找到一条记录时,它会显示连接错误的字符串,我根本无法理解为什么这个else语句没有运行;还是它运行了,并且被下面的语句超过了?

public void onError(final String data, int code) {
    UiApplication.getUiApplication().invokeLater(new Runnable() {
        public void run() {
            removeLoader();
            Dialog.alert("No Results Found!");
        }
    });
} 

分析代码

public Vector parseVehicleResponse(String response){
    Vector vector = new Vector();
    try{
        JSONObject jsonVehicleObject = new JSONObject(response);
        VehicleObject vehicle = new VehicleObject();
            vehicle.setChassisNum(jsonVehicleObject.getString("chassis_no"));//chassis_num
            vehicle.setEngineNum(jsonVehicleObject.getString("engine_no"));//engine_num
            vector.addElement(vehicle);
    }catch(Exception e){
        System.out.println("JSONResponseParser.parseNewsHeadlines() " + e );
    }
    return vector;
}

}

Json

  // Return  encoded with JSON
            $result = array(
    "chassis_no"=>$chassis_no,
   "engine_no"=>$engine_no,
 );

在我看来,您的jasonParser.parseVechicleResponse(data);调用抛出了一个错误,并且您永远无法访问if语句。可能是打字错误吗?你是说吗

parseVehicleResponse

而不是

parseVechicleResponse

(不是额外的"c")??

为了保持思想流的分离,我在这里开始了一个新的答案。。。您可以尝试通过添加"伪元素零"来修改parseVehicleResponse的代码,如下所示:

public Vector parseVehicleResponse(String response){
    Vector vector = new Vector();
    VehicleObject vehicle = new VehicleObject(); // create a "dummy object"
    vehicle.setChassisNum("-1"); // initialize members - with "valid" data... 
    vehicle.setEngineNum("-1");  // again - make it valid type, but otherwise "wrong"
    vector.addElement(vehicle);  // the vector now has at least one element
    // here comes your original code:
    try{
        JSONObject jsonVehicleObject = new JSONObject(response);
        VehicleObject vehicle = new VehicleObject();
            vehicle.setChassisNum(jsonVehicleObject.getString("chassis_no"));//chassis_num
            vehicle.setEngineNum(jsonVehicleObject.getString("engine_no"));//engine_num
            vector.addElement(vehicle);
    }catch(Exception e){
        System.out.println("JSONResponseParser.parseNewsHeadlines() " + e );
    }
    return vector;
}

现在,在主循环中,你做这样的事情:

Public void onResponse(String data, int code) {
    final Vector vehicleInfo = jasonParser.parseVechicleResponse(data);
    if(vehicleInfo.size() > 1 ){
        UiApplication.getUiApplication().invokeLater(new Runnable() {
            public void run() {
                removeLoader();
                // { add some code to strip the zero-th element from vehicleInfo() } 
                UiApplication.getUiApplication().pushScreen(new VehicleSearchResultScreen(etfVehicleInfo.getText(),vehicleInfo));
            }
        });
    }else{
        UiApplication.getUiApplication().invokeLater(new Runnable() {
            public void run() {
                removeLoader();
                Dialog.alert("No Results found.");
            }
        });
    }
}

这将进一步缩小对问题的搜索范围。。。

最新更新