我正在努力解决这段代码。这可能看起来很傻,但我无法弄清楚发生了什么。我正在解析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
。循环完全遍历每个对象。
答案 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;
}
}