Возвращаемое значение из оператора IF

#java #android #json

#java #Android #json

Вопрос:

Я хотел бы вернуть строку из оператора IF. Ниже приведен код. Я анализирую объект JSON, и мне нужно вставить данные в таблицу sql lite.

 if (object.has("message")) {
    JSONObject message = object.getJSONObject("message");
    String newtype_mod = object.getJSONObject("message").getString("type");
    String newcontent_mod = object.getJSONObject("message").getString("content");
    objSample = new GetSetMethod();
    objSample.setnewcontent_mod(newcontent_mod);
    objSample.setnewtype_mod(newtype_mod);
    Log.v("##"   newcontent_mod, "V "   newtype_mod);
}

objSample = new GetSetMethod();
objSample.setNewreportid(newreportid);
objSample.setnewcontent_mod(newcontent_mod);
objSample.setnewtype_mod(newtype_mod);
Log.v(""   newcontent_mod, ""   newtype_mod);
 

Как вы, должно быть, поняли, newcontent_mod и newtype_mod не будут доступны из оператора IF . И мне обязательно нужен оператор IF.

Я понимаю, что вопрос является основным. Пожалуйста, помогите новичку!

Спасибо!

Ответ №1:

Разве вы не можете просто объявить их вне if?

 String newtype_mod = "";
String newcontent_mode = "";
if ((object.has("message"))) {
    //
    // do stuff here
    //
}
// continue as before...
 

Ответ №2:

Вы можете объявить его вне оператора if и просто присвоить значение этим переменным

например:

 String newtype_mod="";
String newcontent_mod="";

if ((object.has("message"))) 
{
     JSONObject message = object.getJSONObject("message");
     newtype_mod = object.getJSONObject("message")
                        .getString("type");
     newcontent_mod = object.getJSONObject("message")
                     .getString("content");
     objSample = new GetSetMethod();
     objSample.setnewcontent_mod(newcontent_mod);        
     objSample.setnewtype_mod(newtype_mod);
     Log.v("##" newcontent_mod,"V " newtype_mod);
}
 

в противном случае

Вы можете объявить оба на глобальном уровне, т.е. переменные уровня класса

Комментарии:

1. «Вы можете объявить его вне оператора if и просто присвоить значение этим переменным» Эта строка отсортировала мою проблему, спасибо

Ответ №3:

Объявите 2 строки вне оператора if, например

 String newcontent_mod,newtype_mod;
if ((object.has("message"))) {
    JSONObject message = object.getJSONObject("message");
    newtype_mod = object.getJSONObject("message")
                        .getString("type");
    newcontent_mod = object.getJSONObject("message")
                        .getString("content");
    objSample = new GetSetMethod();
    objSample.setnewcontent_mod(newcontent_mod);        
    objSample.setnewtype_mod(newtype_mod);
    Log.v("##" newcontent_mod,"V " newtype_mod);
}
 

Комментарии:

1. Это не будет компилироваться — после предложения if локальная переменная newcontent_mod / newtype_mod, возможно, не была инициализирована.