比较android中的两个字符串

比较android中的两个字符串,android,json,string,Android,Json,String,可能重复: 我在解决这个代码时遇到了真正的困难。这可能看起来很傻,但我不知道发生了什么。我正在解析一个JSONArray(没什么大不了的!)我正在使用for循环遍历数组。我想在用户输入和值匹配时中断循环。这是我的密码 String regi = null; JSONObject studentObject = null; try { JSONArray returned = test.getInternetData(); int i; for (i = 0; i < returned.l

可能重复:

我在解决这个代码时遇到了真正的困难。这可能看起来很傻,但我不知道发生了什么。我正在解析一个
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
String regi=null;
JSONObject studentObject=null;
试一试{
JSONArray返回=test.getInternetData();
int i;
对于(i=0;i
据我所知,当找到匹配项时,循环应该停止。
课程代码将与学生对应。我是否遗漏了什么


请注意:函数
getInternetData()
返回整个
JSON数组
。循环完全遍历每个对象。

字符串不能与Java中的
=
相比较。必须使用
string1.equals(string2)

字符串不能与Java中的
==
相比。你必须使用
string1.equals(string2)
使用
regi.equals(reg)
regi.contentEquals(reg)
而不是
=
,你会没事的:-)

使用
regi.equals(reg)
regi.contentEquals(reg)
而不是
=
,你会很好:-)

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

你应该使用regi.contentEquals(reg)

试试这个

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返回=test.getInternetData();
int i;
对于(i=0;i
而不仅仅是

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;
}
}
JSONArray返回=test.getInternetData();
int i;
对于(i=0;i
尝试使用此

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返回=test.getInternetData();
int i;
对于(i=0;i
而不仅仅是

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;
}
}
JSONArray返回=test.getInternetData();
int i;
对于(i=0;i
String hi=“hi”String hello=“hi”if(hi==hello){//do something}这是有效的。但这往往不起作用:
charc='i';String a=“hi”;String b=“h”+c;if(a==b){//something}
=
进行对象比较,而
等于()
进行
String
比较。通读我链接的实际答案。好的,然后尝试sysout方式…System.out.println(“regi:-”+regi+“-reg:-”+reg+“-”),看看你是否能发现任何奇怪的东西:)@DibyaPanda:Java实习生字符串文本。所以当你创建字符串文本时
String a=“”,“String b=“…”
,它首先将字符串“…”添加到一个内部字符串表中,然后在创建第二个字符串b时,它会查找“…”,可以在插入字符串的表中看到它,而b将指向a所指向的相同字符串。但是,当您不是逐字声明字符串时,这并不总是有效。==检查两个原语是否具有相同的值,或者两个对象是否指向相同的基础对象。String hi=“hi”String hello=“hi”if(hi==hello){//do something}这是有效的。这往往不是:
charc='i';String a=“hi”;String b=“h”+c;如果(a==b{//something}
=
进行对象比较,而
equals()
进行
字符串比较。通读我链接的实际答案。确定,然后尝试sysout方式…System.out.println(“regi:-”+regi+)“-reg:-”+reg+“-”;看看你是否能发现任何奇怪的东西:)@DibyaPanda:Java实习生字符串文本。因此,当你创建to-String文本
String a=“…”;String b=“…”
,它首先将字符串“…”添加到一个内部字符串表中,然后当你创建第二个字符串b时,它会查找“。。。",可以在插入字符串表中看到它,b将指向a所指向的相同字符串。但是,当您不是逐字声明字符串时,这并不总是有效。==检查两个原语是否具有相同的值,或者两个对象是否指向相同的基础对象。我不确定哪一行引起了问题。我认为我的情况有点不同n您在日志中打印的名称是什么?它没有任何数据(从您发布的帖子来看,它是一个空变量)@Sharath我确信我没有比较空变量。请指出哪个变量是空的?它没有比较,只是尝试将这一行log.d(“详细信息”,name+course+regi+I)更改为log.d(“详细信息”,name+“-”+课程+