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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

上干货~

这道题目是酱紫的.:
2.分析以下需求,并用代码实现:
        (1)定义一个Person类型(属性私有、空参有参构造、set、get方法、toString方法),
                包含两个属性:姓名(String name)、年龄(int age)
        (2)List集合中存储多个Person对象,获取年龄最大的Person对象并打印信息
        (3)思路
                a.定义一个Person类型的变量, 先记住第一个元素
                b.循环遍历集合
                c.用每一个元素和变量比较年龄, 如果集合中的元素比变量记住的年龄大
                d.用变量记住这个年龄较大的元素
                e.返回变量记住的元素

--------------------------------------------------------------------------------------------------------------------手动分割线.
代码区.


测试方法区:
import java.util.ArrayList;
import java.util.List;
import com.heima.bean.Person;


public class HomeWork02 {
        public static void main(String[] args) {
                List<Person> list = new ArrayList<>();
                list.add(new Person("赵刚",18));
                list.add(new Person("老李",28));
                list.add(new Person("柱子",16));
                list.add(new Person("坂田",58));
                Person p = list.get(0);
                for (int i = 0; i <list.size(); i++) {
                        if (p.getAge()<=list.get(i).getAge()) {
                                p = list.get(i);
                        }
                       
                }
                System.out.println(p);
        }
}

----------------------------------------------------------------------------------------------------------------手动分割线
Person类 代码区.
public class Person {
        private String name;
        private int age;
        public Person() {
                super();
               
        }
        public Person(String name, int age) {
                super();
                this.name = name;
                this.age = age;
        }
        public String getName() {
                return name;
        }
        public void setName(String name) {
                this.name = name;
        }
        public int getAge() {
                return age;
        }
        public void setAge(int age) {
                this.age = age;
        }
        @Override
        public String toString() {
                return "Person [name=" + name + ", age=" + age + "]";
        }
        @Override
        public boolean equals(Object obj) {
                Person p = (Person)obj;
                return this.name.equals(p.name) && this.age == p.age;
        }
}


-----------------------------------------------------------------------------------------------------------------手动分割线
这道题, 就我给朋友讲题时候的事情我说说吧:

这道题,初看起来很简单
无非就是遍历,然后对比元素
最后在调用Person 类中方法,

但是仔细想想, 其实问题也不少,但是都是 小问题,
比如:
       角标问题,循环条件到底写  i<list.size(),   还是i<list.size()-1;
       角标问题, 我通过 list.get(i);获取到的当前对象,我怎么去对比,和每个对比人对比.

        我们每次对比的时候 list.get(index).xxxxx
       其实就是在拿到了 index 角标中对象的 xxxxx方法,
        xxxxxx 如果是  getName(); 那么我们就拿到的是name,
       同理,如果是getAge(),那就是拿的是他的age,
       于是乎,答案就瞬间出来了.

1 个回复

倒序浏览
角标问题,就是需要胆大心细.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马