题目:
编写一个包含若干个属性的类A,
要求在A中定义一个可以得到A的拷贝方法,
编写一个能够比较A类对象,其值是否相等的方法。这个是老师讲的方法:
class A{
  String name; int age;
  public A(String n,int a){  this.name=n; this.age=a;}
  public A copy()
{...新建一个返回对象,其属性的值等于this的对应属性的值....}
  public boolean compare(A v)
{.....比较v中每一个‘属性’的值是否等于this对应的属性的值,都相等返回true,否则返回false....}
}
A x=new A(“QQ”,10); //x代表name="QQ" age=10的A类对象。
A y=x.copy();   //y代表x的拷贝,这个拷贝的对象其name="QQ",age=10。但x和y不是同一个对象。
boolean z=x.compare(y);  //z为true,因为x和y的name值及其age值都相等。  这个是我的做法:package t28;
public class NewClass {
    int a;
    int b;
    double c;
  }
class A{
    A x=new A("QQ",10);
    A y=x.copy();
    boolean z=x.compare(y);
    
    
String name;int age;
public A(String n,int a){ 
    this.name=n; this.age=a;
}
public A copy(){
    A y=new A();
String names;
int ages;
names=this.name;
ages=this.age;    return null;
}public boolean compare(Av)
{       
    if(A==v)
      return true;
    else
        return false;    
}
}
知道做法的话,帮忙做一下,这个关系到我的期末成绩的,谢谢!
   

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【zhuqiang1268】截止到2008-06-26 00:39:57的历史汇总数据(不包括此帖):
    发帖数:0                  发帖分:0                  
    结贴数:0                  结贴分:0                  
    未结数:0                  未结分:0                  
    结贴率:-------------------结分率:-------------------
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
      

  2.   


    另,比较可以重写equals方法吧
      

  3.   

    似乎答过这个题
    你用clone吧
    学了一个学期的java,应该对常的方法有所了解
      

  4.   

    你是不知道的,虽说我们学了一个学期的JAVA但是我们没有基础呀,老师就讲他的,我们自己写程序一般都是书上的,但是这个题,是老师给我们每个人一道题的,有的简单有的难~我都晕了,今天就要交上去了,还没有做完~这个关系到我的期末成绩的,哎~~如果你知道的话,帮我做一下可以吗?谢谢!!
      

  5.   

    同情你,以前有一个老师教我们也是这样,就给出答案吧不过LZ,多练习才是王道,我可以给你说一次,但是以后呢,不能总让别人解决吧,要自己掌握知识多看书,多联系,不然我就是在害你!!!
    public class A {
    // 最好不要在这里写,下面被注释的这些。写在调用的方法里,比如下面的main方法
    // A x=new A("QQ",10);
    // A y=x.copy();
    // boolean z=x.compare(y); String name; int age; public A(String n, int a) {
    this.name = n;
    this.age = a;
    } public A() {
    } public A copy() {
    A y = new A(); // 由于定义了构造方法A(String n,int a),所以原来的A()被覆盖,要重新定义
    // String names; 这里定义names和ages完全没必要,用y.age y.name
    // int ages;
    // names=this.name;
    // ages=this.age;
    y.age = this.age;
    y.name = this.name;
    //return null;返回null ?,如果这样copy方法返回的始终是null
    return y;
    } public boolean compare(A v) // 这里没有空格
    {
    // 原来是 if(A==v),A是一个类,v是A类的对象,怎么能这么比较呢
    // 并且==是比较地址,或比较基础类型(比如int),用equals才是对象值的比较
    if (this.name.equals(v.name) && this.age == v.age)
    return true;
    else
    return false;
    }

    public static void main(String[] args) {
    A x = new A("姓名", 123);
    A y = x.copy();
    System.out.println(x.compare(y)); y.age = 456;
    System.out.println(x.compare(y));
    }
    }
      

  6.   

    lz这个只是填充老师的代码。应该是很简单的。基本上基于面向过程的思想。
    标准写法就是7楼的。 你可以自己看看jdk文档 复制用clone作 比较重写equals