Java 比较给定方法头的名称?v2
嗯,另一个问题很老了,我想不太可能有更多的人会偶然发现它并阅读/回答它,所以下面是: 给定标题:Java 比较给定方法头的名称?v2,java,Java,嗯,另一个问题很老了,我想不太可能有更多的人会偶然发现它并阅读/回答它,所以下面是: 给定标题: public boolean equals(Name otherName) 我应该比较两个名称对象是否相等。我现在得到的是: public boolean equals(Name otherName){ return (otherName.equalsIgnoreCase(this)); } 正如前一个帖子中的某人所建议的那样 但是,我得到一个找不到符号错误 下面是我要挑
public boolean equals(Name otherName)
我应该比较两个名称对象是否相等。我现在得到的是:
public boolean equals(Name otherName){
return (otherName.equalsIgnoreCase(this));
}
正如前一个帖子中的某人所建议的那样
但是,我得到一个找不到符号错误
下面是我要挑剔的其余代码。请原谅我的草率和诸如此类的行为,今晚我的代码一点也不好
Name.java:
public class Name{
private String firstName;
private String middleName;
private String lastName;
public Name (String first, String middle, String last){
firstName = first;
middleName = middle;
lastName = last;
}
public String getFirst(){
return firstName;
}
public String getMiddle(){
return middleName;
}
public String getLast(){
return lastName;
}
public String firstMiddleLast(){
return (firstName + middleName + lastName);
}
public String lastFirstMiddle(){
return (lastName + ", " + middleName + firstName);
}
public boolean equals(Name otherName){
return (otherName.equalsIgnoreCase(this));
}
public String initials(){
String initials = firstName.substring(0,1) + middleName.substring(0,1) + lastName.substring(0,1);
initials.toUpperCase();
return initials;
}
public int length(){
int sum = firstName.length() + middleName.length() + lastName.length();
return sum;
}
}
TestingNames.java:
import java.util.Scanner;
public class TestNames{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
System.out.println("Enter the first name, middle name, and last name in that order for the first name object.");
Name name = new Name(scan.next(), scan.next(), scan.next());
System.out.println("Enter the second name, middle name, and last name in that order for the first name object.");
Name name2 = new Name(scan.next(), scan.next(), scan.next());
System.out.println("Printing name in the order first name, middle name, last name");
System.out.println(name.firstMiddleLast());
System.out.println(name2.firstMiddleLast());
System.out.println("Printing name in the order last name, first name, middle name");
System.out.println(name.lastFirstMiddle());
System.out.println(name2.lastFirstMiddle());
System.out.println("Printing initials");
System.out.println(name.initials());
System.out.println(name2.initials());
System.out.println("Printing name length");
System.out.println(name.length());
System.out.println(name2.length());
System.out.println("Are these names equal?");
System.out.println(name.equals(name2));
}
}
在中使用时,没有在类名中实现equalsIgnoreCase方法:
public boolean equals(Name otherName){
return (otherName.equalsIgnoreCase(this));
}
所以错误肯定会发生。
您可以尝试:
public boolean equals(Name otherName){
if(firstName.equalsIgnoreCase(otherName.firstName) && middleName.equalsIgnoreCase(otherName.middleName) && lastName.equalsIgnoreCase(otherName.lastName))
return true;
else
return false;
}
您正在比较的对象不是字符串
尝试返回otherName.equalsIgnoreCasethis.firstName;我的猜测是,Name并没有声明equalsIgnoreCase字符串。你为什么超载?另外,请提供一个到上一个问题的链接,这样我们可以了解一些背景。好吧,这将是一个愚蠢的问题,但请容忍我:你说它没有实现是什么意思?我只需要调用这个方法就行了。Sorryit适用于字符串,因为它是在那里实现的。如果您正在使用它,您必须像定义equals方法一样定义此方法。查看我的最新答案
public boolean equals(Name otherName){
return (otherName.getFirst().equalsIgnoreCase(firstName));
}