if / else语句在android app中不起作用(else语句总是执行)

时间:2015-08-01 11:52:44

标签: java android

我正在编写一个应用程序,它接受两个用户输入并将它们与存储在数据库中的数据相匹配,并在TextView中显示来自用户输入的相应数据(行)。

如果条件为真,则if语句完全独立。但是,如果添加else语句,即使条件为真也不会执行。

如果语句为true或false,则始终执行else语句

protected void onPostExecute(Void v) {
    // ambil data dari Json database
    try {
        JSONArray Jarray = new JSONArray(result);
        for (int i = 0; i < Jarray.length(); i++) {
            JSONObject Jasonobject = null;
            //text_1 = (TextView)findViewById(R.id.txt1);
            Jasonobject = Jarray.getJSONObject(i);

            //get an output on the screen
            //String id = Jasonobject.getString("id");
            String name = Jasonobject.getString("name");
            String db_detail="";

            if (et.getText().toString().equalsIgnoreCase(name)) {
                db_detail = Jasonobject.getString("detail");
                text.setText(db_detail);
                break;
            } else {
                Toast.makeText(MainActivity.this, "Not available", Toast.LENGTH_LONG).show();
                break;
            }
        }
        this.progressDialog.dismiss();

3 个答案:

答案 0 :(得分:2)

你永远不会完全依赖Jarray。如果第一次迭代et.getText().toString().equalsIgnoreCase(name)为false,并且执行了else分支,则立即break

try {
   JSONArray Jarray = new JSONArray(result);
   for(int i=0;i< Jarray.length(); i++) {
      // other code
      if(et.getText().toString().equalsIgnoreCase(name)) {
            db_detail = Jasonobject.getString("detail");
            text.setText(db_detail);
            break;
      }
   }
   if (TextUtils.isEmpty(db_detail)) {
      // show toast
   }
 }

答案 1 :(得分:1)

使用flag变量检查用户是否可用,并在for循环后打印消息。

boolean available=false;

JSONArray Jarray = new JSONArray(result);
for(int i=0;i<Jarray.length();i++)
{
    JSONObject Jasonobject = null;
    //text_1 = (TextView)findViewById(R.id.txt1);
    Jasonobject = Jarray.getJSONObject(i);

    //get an output on the screen
    //String id = Jasonobject.getString("id");
    String name = Jasonobject.getString("name");
    String db_detail="";
    if(et.getText().toString().equalsIgnoreCase(name)) 
    {
        db_detail = Jasonobject.getString("detail");
        text.setText(db_detail);
        available=true;
        break;
    } 
}

if(!available)
      Toast.makeText(MainActivity.this, "Not available", Toast.LENGTH_LONG).show();

答案 2 :(得分:0)

您是否尝试过使用:

else if(!et.getText().toString().equalsIgnoreCase(name))