日期:2014-05-20  浏览次数:20648 次

求帮大神助!
1.写一个类Name,存储一个人的第一,中间和最后一个名字,并提供以下方法:
<1>public Name(String first,String middle, String last)--构造函数。按给定的大小写形式来定义名称,不要改为全大写,或者全小写。
<2> public String getFirst()-- 返回第一个名字
<3> public String getMiddle()--返回中间的名字
<4> public String getLast()--返回最后的名字
<5> public String firstMiddleLast()--按顺序包含了那个人的全名,比如“Mary Jane Smith”。
<6> public String lastFirstMiddle()--返回一个字符串包含那个人的全名,最后一个名字在第一个名字之前并用逗号隔开。例如" Smith,Mary Jane”。
<7>public boolean equals(Name otherName)--如果这个对象的name和otherName一样,则返回真。比较应该不区分大小写。(提示:有一个字符串的方法equalsIgnoreCase与equals方法功能差不多,只是前者在做比较时,没有区分大小写)。
<8> public String initials()--返回那个人姓名的首字母(一个只有三个字符的字符串)。所有的首字母缩写应当大写,无论你输入的名字是否是大写。(提示:不使用charAt方法,而是使用subString方法去得到一个仅仅包含第一个字母的字符串。你就可以将这个字符串转换为大写。见书本Figure3.1中对subString方法的描述)。
<9>public int length()--返回名字全名的字符总数,但不包括空格。
2.现在编写一个TestNames.java的程序,提示并保存用户输入的两个名字(每个名字都需要first, middle, 和 last names),为每个名字创建一个对象,并采用Name类中的方法做下面的事情:
a为每一个对象,打印
  first-middle-last 顺序
  last-first-middle 顺序
姓名中的大写字母
长度
B指出他们的名字是否一样。
第七项(就是比较名字)的该如何做到,求解啊!!

------解决方案--------------------
不知道楼主第七题是以谁做比较?是创建的name对象.equlas(参数)?如果是这样是否你的name类有个name属性?
------解决方案--------------------
楼主有点懒啊!简单的面向对象,加上对字符串的操作,没事自己练习一下吧。
------解决方案--------------------
Java code
public boolean equals(Name otherName) { 
    if (otherName == null) return false;
    //可以分别比较3个名
    return (this.first.equalsIgnoreCase(otherName.first) && 
            this.middle.equalsIgnoreCase(otherName.middle) &&
            this.last.equalsIgnoreCase(otherName.last)); 

    //可以直接比较全名
    //return this.firstMiddleLast().equalsIgnoreCase(otherName.firstMiddleLast()); 
}

调用的时候
Name n1 = new Name(xxx, yyy, zzz);
Name n2 = new Name(aaa, bbb, ccc);
System.out.println(n1.equals(n2));