我正在研究Java中的列表。我无法将两个列表相互比较。我想要做的是返回true
如果两个列表具有相同的名称,但它会一直返回false
。在我的课程中,示例DVD1
和DVD3
都应该具有相同的名称。 DVD
是CD
和IBook
。因此DVD1
是CD1
,其名称为S23
。 DVD3
是CD2
,其名称为S23
。它应该返回true。我想我必须以某种方式合并equalname
(我用来比较CD类中的两张CD的方法)。我该怎么办?
import tester.Tester;
interface IBook{
//return name
public boolean samename(IBook that);
}
class CD{
String name;
String color;
CD(String name, String color){
this.name=name;
this.color=name;
}
public String returnname(){
return this.name;
}
public boolean equalname (CD that){
return this.name == that.name;
}
}
class mtlob implements IBook{
public String returnname(){
return "";
}
public boolean samename(IBook that){
return false;
}
}
class DVD implements IBook{
CD first;
IBook rest;
DVD(CD first, IBook rest){
this.first=first;
this.rest=rest;
}
public boolean samename(IBook that){
return this.first.equals(that); //this.rest.samename(that);
}
}
class ExamplesX{
CD CD1 = new CD ("S23", "blue");
CD CD2 = new CD ("S23", "red");
CD CD3 = new CD ("cs2, ", "black");
CD CD4 = new CD ("HFF", "black");
mtlob empty = new mtlob ();
IBook DVD1 = new DVD (this.CD1, empty);
IBook DVD2 = new DVD (this.CD3, this.DVD1);
IBook DVD3 = new DVD (this.CD2, this.DVD1);
boolean test(Tester t){
return
t.checkExpect(this.CD1.equalname(CD2), true)&&
t.checkExpect(this.DVD1.samename(DVD3), true);
} }
答案 0 :(得分:3)
使用方法等于而不是使用==
string1.equals(string2)
答案 1 :(得分:1)
比较字符串时,需要使用.equals方法。 ==只会确定两个变量是否指向完全相同的字符串(smae指针),而不是两个具有相同文本的字符串,例如:
string a="hello";
string b=a;
string c=getUserInput();//User inputs the string "hello"
System.out.println(a==b);
System.out.println(a==c);
System.out.println(a.equals(c));
将输出
true
false
true
答案 2 :(得分:1)
只需使用==表示原始类型。
答案 3 :(得分:1)
使用这样的equals方法:
if((CD1.name).equals(CD2.name)){
//........true
}