比较android中的两个字符串

时间:2012-10-05 19:20:25

标签: android json string

  

可能重复:
  Comparing two identical strings with == returns 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。循环完全遍历每个对象。

5 个答案:

答案 0 :(得分:2)

无法将字符串与Java中的==进行比较。您必须使用string1.equals(string2)

答案 1 :(得分:1)

使用regi.equals(reg)regi.contentEquals(reg)代替==,你会没事的: - )

答案 2 :(得分:1)

使用regi.contentEquals(reg)!regi.contentEquals(reg)进行比较

答案 3 :(得分:1)

你应该使用regi.contentEquals(reg)

答案 4 :(得分: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;
}
}