Java 检查两个元素是否相同,每个元素来自不同的字符串数组
这段代码的目标是比较两个不同的string[]数组,并检查有多少元素匹配。这将允许这些方法随后查看学生是否通过了测试,并确定他们的字母等级。然而,每一次测试的结果都是,通过测试的学生返回true,字母成绩返回“A”。现在已经正确地比较了元素,我仍然存在每个元素都通过.equals()的问题。 即Java 检查两个元素是否相同,每个元素来自不同的字符串数组,java,arrays,string,bluej,Java,Arrays,String,Bluej,这段代码的目标是比较两个不同的string[]数组,并检查有多少元素匹配。这将允许这些方法随后查看学生是否通过了测试,并确定他们的字母等级。然而,每一次测试的结果都是,通过测试的学生返回true,字母成绩返回“A”。现在已经正确地比较了元素,我仍然存在每个元素都通过.equals()的问题。 即 answerKey[1]=“B”; 学生回答[1]=“C” 如果要比较这两个元素,它将传递.equals()。 问题在于: if(studentAnswers[cnt] == answerKey[cnt
answerKey[1]=“B”;
学生回答[1]=“C”代码>
如果要比较这两个元素,它将传递.equals()。
问题在于:
if(studentAnswers[cnt] == answerKey[cnt])
要比较String
s和其他对象实例,必须使用equals
方法:
if(studentAnswers[cnt].equals(answerKey[cnt]))
在两种方法中都必须解决这一问题listofawers#checkPassOrFail
和listofawers#computeGrade
问题在于:
if(studentAnswers[cnt] == answerKey[cnt])
要比较String
s和其他对象实例,必须使用equals
方法:
if(studentAnswers[cnt].equals(answerKey[cnt]))
在Java中,当您要比较对象时,必须使用equal(),这必须在listofawers#checkPassOrFail
和listofawers#computeGrade
两种方法中解决
在Java中,当您想要比较对象时,必须使用equal()
我在这里看到一个打字错误:
ListOfAnswers bobAnswerList = new ListOfAnswers(danAnswers);
应该是:
ListOfAnswers bobAnswerList = new ListOfAnswers(bobAnswers);
或者你把丹的好答案告诉鲍勃;)
哦,正如其他人所说,在比较(非空)字符串时,请始终使用equals
,除非您真的想检查标识(我看到问题已经更新为这样做)。我在这里看到一个打字错误:
ListOfAnswers bobAnswerList = new ListOfAnswers(danAnswers);
应该是:
ListOfAnswers bobAnswerList = new ListOfAnswers(bobAnswers);
或者你把丹的好答案告诉鲍勃;)
哦,正如其他人所说,在比较(非空)字符串时,请始终使用equals
,除非您真的想检查标识(我看到问题已经更新为这样做)。问题是,无论您在studentAnswers列表中放置了什么字母,这两种方法的结果都是真的,并且“A”。我想一个更好的问题是,如果我在if语句中正确比较了每个数组的元素。使用studentAnswers[cnt].equals(answerKey[cnt])为什么使用字符串数组,为什么不使用字符数组?@BjørnBrå那么这应该不是问题。不,但这有必要吗?问题是,无论你在学生答案列表中放置了什么字母,这两种方法的结果都是正确的,而且“A”。我想一个更好的问题是,如果我在if语句中正确比较每个数组的元素。使用studentAnswers[cnt].equals(answerKey[cnt])为什么要使用字符串数组,为什么不使用字符数组?@BjørnBrå那么这不应该是一个问题。不,但有必要吗?该死,你赢了我一秒钟。:)==可能仍然有效,因为单个字符串常量可能被“内部化”。。。但他们这样做更多是出于偶然。然而,我希望每个人在使用原始代码时都能得到零计数…@ClemensKlein Robbenhaar也许这是一个练习,以显示使用=
和等于
之间的区别(因为此代码看起来像家庭作业)。无论如何,如果您将测试更改为从外部源(如文件)读取数据,则=
将不起作用(在本例中字符串
池将不起作用)。感谢您提供的.equals()修复,但也有人指出了一个拼写错误,以防万一有人怀疑:我不主张在字符串中使用“==”,除非你真的知道自己在做什么,否则在这里总是使用equals。我只是想指出这里的问题可能是别的。该死,你比我快了一秒。:)==可能仍然有效,因为单个字符串常量可能被“内部化”。。。但他们这样做更多是出于偶然。然而,我希望每个人在使用原始代码时都能得到零计数…@ClemensKlein Robbenhaar也许这是一个练习,以显示使用=
和等于
之间的区别(因为此代码看起来像家庭作业)。无论如何,如果您将测试更改为从外部源(如文件)读取数据,则=
将不起作用(在本例中字符串
池将不起作用)。感谢您提供的.equals()修复,但也有人指出了一个拼写错误,以防万一有人怀疑:我不主张在字符串中使用“==”,除非你真的知道自己在做什么,否则在这里总是使用equals。我只是想指出这里的问题可能是其他问题。谢谢你指出,这是我代码的第二个问题。谢谢你指出,这是我代码的第二个问题。