A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 枫儿 金牌黑马   /  2013-10-26 11:32  /  1272 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

帮忙看看代码,编译提示找不到Person类  怎么回事
  1. import java.util.*;
  2. class Person
  3. {
  4.         private String name;
  5.         private int age;
  6.         Person(String name,int age)
  7.         {
  8.         this.name=name;
  9.         this.age=age;
  10.         }

  11.         public boolean equals(Object obj)
  12.         {
  13.                 if (!(obj instanceof Person))
  14.                 {
  15.                         return false;
  16.                 }

  17.                 Person p=(Person)obj;
  18.                 return this.name.equals(p.name) && this.age==p.age;
  19.         }

  20.         public String getname()
  21.         {
  22.                 return name;
  23.         }
  24.         public int getage()
  25.         {
  26.                 return age;
  27.         }
  28. }

  29. class  Arraylist3
  30. {
  31.         public static void sop(Object obj)
  32.         {
  33.                 System.out.println(obj);
  34.         }

  35.         public static void main(String[] args)
  36.         {
  37.                 ArrayList al=new ArrayList();
  38.                 al.add(new Person("zhangsan1"+30));
  39.                 al.add(new Person("zhangsan2"+36));
  40.                 al.add(new Person("zhangsan1"+30));
  41.                 al.add(new Person("zhangsan3"+35));
  42.                
  43.                 sop(al);
  44.                 al=qcf(al);
  45.                 sop(al);
  46.                
  47.         }

  48.         public static ArrayList qcf(ArrayList al)
  49.         {
  50.                 ArrayList newal=new ArrayList();
  51.                 Iterator it= al.iterator();
  52.                 while (it.hasNext())
  53.                 {
  54.                         Object obj=it.next();
  55.                         if(!newal.contains(obj))
  56.                         {
  57.                                 newal.add(obj);
  58.                         }
  59.                 }
  60.                 return newal;
  61.         }
  62. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

11 个回复

倒序浏览
以下是正确的代码:
import java.util.*;
class Person
{
        private String name;
        private int age;
        Person(String name,int age)
        {
        this.name=name;
        this.age=age;
        }

        public boolean equals(Object obj)
        {
                if (!(obj instanceof Person))
                {
                        return false;
                }

                Person p=(Person)obj;
                return this.name.equals(p.name) && this.age==p.age;
        }

        public String getname()
        {
                return name;
        }
        public int getage()
        {
                return age;
        }
}

class  Arraylist3
{
        public static void sop(Object obj)
        {
                System.out.println(obj);
        }

        public static void main(String[] args)
        {
                ArrayList al=new ArrayList();
                al.add(new Person("zhangsan1",30));
                al.add(new Person("zhangsan2",36));
                al.add(new Person("zhangsan1",30));
                al.add(new Person("zhangsan3",35));
               
                sop(al);
                al=qcf(al);
                sop(al);
               
        }

        public static ArrayList qcf(ArrayList al)
        {
                ArrayList newal=new ArrayList();
                Iterator it= al.iterator();
                while (it.hasNext())
                {
                        Object obj=it.next();
                        if(!newal.contains(obj))
                        {
                                newal.add(obj);
                        }
                }
                return newal;
        }
}
你代码的主要错误就是:
创建匿名对象的时候,构造函数传参有错误,两个参数之间用 ,分隔符进行分开。
以后注意点,就不会出现这个错误了。
希望对您有帮助。

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

回复 使用道具 举报
构造方法是person(String name , int age)
而你new person对象时是 new Person("zhangsan1"+30);
回复 使用道具 举报
1961993790 发表于 2013-10-26 11:40
以下是正确的代码:
import java.util.*;
class Person

真的。我什么时候头脑一热用+号传值了  。。。
回复 使用道具 举报
Person的实例的时候出了问题,
  1. al.add(new Person("zhangsan1"+30));
  2.                 al.add(new Person("zhangsan2"+36));
  3.                 al.add(new Person("zhangsan1"+30));
  4.                 al.add(new Person("zhangsan3"+35));
  5.                
复制代码
把"+"改成逗号,这是你的失误吧!
回复 使用道具 举报
杨增坤 发表于 2013-10-26 11:45
Person的实例的时候出了问题,把"+"改成逗号,这是你的失误吧!

equals比较全变哈希值了
回复 使用道具 举报
枫儿 金牌黑马 2013-10-26 11:52:34
7#
亲雨泽 发表于 2013-10-26 11:43
构造方法是person(String name , int age)
而你new person对象时是 new Person("zhangsan1"+30); ...

哈希值怎么办
回复 使用道具 举报

你存的容器不是ArrayList。  不需要覆盖HashCode()方法。 ArrayList存储数据的方式是数组。不是哈希表。
回复 使用道具 举报
枫儿 金牌黑马 2013-10-26 12:03:35
9#
1961993790 发表于 2013-10-26 11:40
以下是正确的代码:
import java.util.*;
class Person

嗯,能编译,能运行  不过运行后的全变哈希值了  咋弄
回复 使用道具 举报
嗯,能编译,能运行  不过运行后的全变哈希值了  咋弄

这个好办,以下代码:就能解决问题
class Person {
        private String name;
        private int age;

        Person(String name, int age) {
                this.name = name;
                this.age = age;
        }

        public boolean equals(Object obj) {
                if (!(obj instanceof Person)) {
                        return false;
                }

                Person p = (Person) obj;
                return this.name.equals(p.name) && this.age == p.age;
        }

        public String getname() {
                return name;
        }

        public int getage() {
                return age;
        }
}

class Arraylist3 {
        public static void sop(ArrayList<Person> al) {
                for (int i = 0; i < al.size(); i++) {

                        System.out.println(al.get(i).getname() + "今年" + al.get(i).getage());
                }
        }

        public static void main(String[] args) {
                ArrayList al = new ArrayList();
                al.add(new Person("zhangsan1", 30));
                al.add(new Person("zhangsan2", 36));
                al.add(new Person("zhangsan1", 30));
                al.add(new Person("zhangsan3", 35));

                sop(al);
                al = qcf(al);
                sop(al);

        }

        public static ArrayList qcf(ArrayList al) {
                ArrayList newal = new ArrayList();
                Iterator it = al.iterator();
                while (it.hasNext()) {
                        Object obj = it.next();
                        if (!newal.contains(obj)) {
                                newal.add(obj);
                        }
                }
                return newal;
        }
}

希望楼主好好思考,关键代码如下:
        public static void sop(ArrayList<Person> al) {
                for (int i = 0; i < al.size(); i++) {
                        System.out.println(al.get(i).getname() + "今年" + al.get(i).getage());
                }
        }
希望对您有帮助。

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

回复 使用道具 举报
枫儿 金牌黑马 2013-10-26 12:52:33
11#
1961993790 发表于 2013-10-26 12:29
嗯,能编译,能运行  不过运行后的全变哈希值了  咋弄

这个好办,以下代码:就能解决问题
  1.   public static void sop(ArrayList<Person> al)
复制代码
接受的参数是什么情况?  接收一个al 在Person干嘛
回复 使用道具 举报
枫儿 发表于 2013-10-26 12:52
接受的参数是什么情况?  接收一个al 在Person干嘛

加我qq吧:1961993790:)qq聊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马