0

重複の可能性:
2つの同一の文字列を==と比較するとfalseが返されます

私はこのコードを解くのに本当に苦労しています。これはばかげているように見えるかもしれませんが、私は何が起こっているのか理解できません。私は解析していますJSONArray(大したことではありません!)forループで配列をトラバースしています。ユーザー入力と値が一致したときにループを解除したい。これが私のコードです

String regi = null;
JSONObject studentObject = null;
try {
JSONArray returned = test.getInternetData();
int i;
for (i = 0; i < returned.length(); i++) {
    studentObject = returned.getJSONObject(i);
    regi = studentObject.getString("REGISTRATION_NO");
    if (regi == reg) {
        name = studentObject.getString("STUDENT_NAME");
        break;
    }
}
course = studentObject.getString("COURSE_CODE");
Log.d("Details", name + course + regi + i);//Out put: nullGraduate081018394:name - null
//course: Graduate (same for all), regi: last registration number, 
//i: giving totalnumber of objects

私の知る限り、一致するものが見つかるとループは停止するはずです。COURSE_CODE学生に対応します。私は何かが足りないのですか?

注意:関数getInternetData()は全体を返しJSON Arrayます。ループはすべてのオブジェクトを完全にトラバースしています。

4

5 に答える 5

2

==文字列はJava では比較できません。を使用する必要がありますstring1.equals(string2)

于 2012-10-05T19:24:15.180 に答える
1

の代わりにregi.equals(reg)orを使用すると問題ありません:-)regi.contentEquals(reg)==

于 2012-10-05T19:25:06.413 に答える
1

regi.contentEquals(reg) または!regi.contentEquals(reg) を比較に使用

于 2012-10-05T19:25:10.687 に答える
1

あなたが使用する必要がありますregi.contentEquals(reg)

于 2012-10-05T19:25:12.690 に答える
0

これを使ってみてください

JSONArray returned = test.getInternetData();
int i;
for (i = 0; i < returned.length(); i++) {
// added the below line
studentObject = new JsonObject();
studentObject = returned.getJSONObject(i);
regi = studentObject.getString("REGISTRATION_NO");
if (regi.equals(reg)) {
    name = studentObject.getString("STUDENT_NAME");
    break;
}
}

ただの代わりに

JSONArray returned = test.getInternetData();
int i;
for (i = 0; i < returned.length(); i++) {
studentObject = returned.getJSONObject(i);
regi = studentObject.getString("REGISTRATION_NO");
if (regi == reg) {
    name = studentObject.getString("STUDENT_NAME");
    break;
}
}
于 2012-10-05T19:43:56.683 に答える