0

可能重复:
用 == 比较两个相同的字符串返回 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)orregi.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 回答