黑马程序员技术交流社区

标题: 求解 [打印本页]

作者: 744919632    时间: 2015-11-7 15:28
标题: 求解
请完成下面的代码:(思考题)
        我有5个学生,请把这个5个学生的信息存储到数组中,并遍历数组,获取得到每一个学生信息。
       
        学生:Student
                成员变量:name,age
                构造方法:无参,带参
                成员方法:getXxx()/setXxx()
               
        存储学生的数组?自己想想应该是什么样子的?
         Student[] s = {new Student(),new Student()};
int [] arr = {1,3,4}


作者: sabrina妖儿    时间: 2015-11-7 15:28
package test.game;

import java.util.ArrayList;
import java.util.List;

class Student {
        private String name;
        private  int age;
       
        public Student(){
               
        }

        public Student(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 "Student [name=" + name + ", age=" + age + "]";
        }
       
       
       

}
public class Print {

        public static void main(String[] args) {
                List<Student> arr = new ArrayList<Student>();
               
               
                arr.add(new Student("张三",22));
                arr.add(new Student("李四",16));
                arr.add(new Student("王五",33));
                arr.add(new Student("赵琦",23));
                arr.add(new Student("刘佳",13));
               
                for(Student s:arr){
                        System.out.println(s);
                }

        }

}
结果:
Student [name=张三, age=22]
Student [name=李四, age=16]
Student [name=王五, age=33]
Student [name=赵琦, age=23]
Student [name=刘佳, age=13]


最好用容器,之后遍历,可以很容器存取数据。
作者: 余旋    时间: 2015-11-7 16:16
遍历学生数组,得到学生对象,调用学生对象的getName和getAge方法打印学生信息;
既然数组中存放的是对象,那为何不考虑使用集合来完成呢;
作者: newbee    时间: 2015-11-7 17:00
数组中应该存放 指向对象的指针
作者: 许佳鑫    时间: 2015-11-7 21:30
  1. public class Students {

  2.         public static void main(String[] args) {

  3.                 ArrayList<Student> stus=new ArrayList<Student>();//ArrayList集合装对象

  4.                 stus.add(new Student("张三",11));
  5.                 stus.add(new Student("李四",21));
  6.                 stus.add(new Student("王二",18));
  7.                
  8.                 for(Student st:stus)
  9.                 System.out.println(st);
  10.         }

  11. }

  12. class Student{
  13.        
  14.         String name;
  15.         int age;
  16.        
  17.         public Student(String name, int age) {
  18.                 super();
  19.                 this.name = name;
  20.                 this.age = age;
  21.         }
  22.        
  23.         public String getName() {
  24.                 return name;
  25.         }
  26.         public void setName(String name) {
  27.                 this.name = name;
  28.         }
  29.         public int getAge() {
  30.                 return age;
  31.         }
  32.         public void setAge(int age) {
  33.                 this.age = age;
  34.         }
  35.        
  36.         @Override//override toString方法方便输出信息
  37.         public String toString() {
  38.                 return "姓名:"+name+" 年龄:"+age;
  39.         }
  40.        
  41. }
复制代码



作者: 韦德460    时间: 2015-11-7 21:39
许佳鑫 发表于 2015-11-7 21:30

List<Student> stus=new ArrayList<Student>();
这样比较好

作者: 韦德460    时间: 2015-11-7 21:42
许佳鑫 发表于 2015-11-7 21:30

for(Student st:stus)
       System.out.println(st);

st是Student类的对象,不是字符串,不能用 System.out.println来打印
作者: 许佳鑫    时间: 2015-11-7 21:51
韦德460 发表于 2015-11-7 21:42
for(Student st:stus)
       System.out.println(st);

一般都是List<Student> stus=new ArrayList<Student>();这样写,那么问题来了,这样写比我上面那样写好在哪里呢?
我重写了Student的toString方法,这样直接打印是可以的。
作者: 强子_Y528o    时间: 2015-11-7 22:07
用集合比较好,List<Student> stus=new ArrayList<Student>();
作者: 韦德460    时间: 2015-11-7 22:22
许佳鑫 发表于 2015-11-7 21:51
一般都是List stus=new ArrayList();这样写,那么问题来了,这样写比我上面那样写好在哪里呢?
我重写了S ...

我看了一下FilterOutputStream这个类,里面确实有public void println(Object x)这个方法,谢谢你的指点
作者: Jared    时间: 2015-11-7 22:30

Student[] s = {new Student(“zhangsan”,10),new Student("lisi",20),new Student("wangwu",30),new Student("zhaoliu",40),new Student("sunqi",50)};

for(int x=0;x<5;x++){
  System.out.println(s[x].getName()+s[x].getAge())
}
作者: Jared    时间: 2015-11-7 22:31
给个分吧 哥们 急用分的!!
作者: 许佳鑫    时间: 2015-11-7 22:48
韦德460 发表于 2015-11-7 22:22
我看了一下FilterOutputStream这个类,里面确实有public void println(Object x)这个方法,谢谢你的指点 ...

互相学习,我现在在想为什么这样写会比较好?List stus=new ArrayList();   只是感觉比较好,似乎更符合接口编程,可以实现多态更方便。 但终究还是说不清。
作者: 请指教    时间: 2015-11-8 17:26
//创建Students类
class Students
{       
        private String name;
        private int age;
        Students(String name,int age)       
        {
                this.name=name;
                this.age=age;       
        }
        public void set_name(String name)
        {
                this.name=name;
        }
        public String get_name()
        {
                return this.name;
        }
       
        public void set_age(int age)
        {
                this.age=age;
        }
        public int get_age()
        {
                return this.age;
        }
}

//包含主函数的类
public class BianLi {

        public static void main(String[] args)
        {
                //将对象存储到数组中
                Students[] st=new Students[]
                              {new Students("张三",15),new Students("李四",16),new Students("王五",17),
                                                new Students("赵六",18),        new Students("二狗",19)};       
                //遍历数组中的对象
                for(int i=0;i<st.length;i++)
                {               
                        System.out.println("name:\t"+st[i].get_name()+"\tage:"+st[i].get_age());                                                        
                }
        }               
}

结果是:
name:        张三                age:15
name:        李四          age:16
name:        王五                age:17
name:        赵六                age:18
name:        二狗                age:19



作者: 帮助信息    时间: 2015-11-9 16:59
  1. public class demo1 {
  2.         public static void main(String[] args) {
  3.                 Student []stu=new Student[5];
  4.                 stu[0]=new Student("老大",18);
  5.                 stu[1]=new Student("大二",38);
  6.                 stu[2]=new Student("张三",48);
  7.                 stu[3]=new Student("李四",22);
  8.                 stu[4]=new Student("王五",28);
  9.                 for(int i=0;i<stu.length;i++){
  10.                         System.out.println(stu[i]);
  11.                 }

  12.         }
  13. }
  14. class Student{
  15.         private String name;
  16.         private int age;
  17.         public Student(String name, int age) {
  18.                 super();
  19.                 this.name = name;
  20.                 this.age = age;
  21.         }
  22.         public Student() {
  23.                 super();
  24.         }
  25.         public String getName() {
  26.                 return name;
  27.         }
  28.         public void setName(String name) {
  29.                 this.name = name;
  30.         }
  31.         public int getAge() {
  32.                 return age;
  33.         }
  34.         public void setAge(int age) {
  35.                 this.age = age;
  36.         }
  37.         @Override
  38.         public String toString() {
  39.                 return "Student [name=" + name + ", age=" + age + "]";
  40.         }
  41.        
  42. }
复制代码

作者: 478883662    时间: 2015-11-10 09:14
许佳鑫 发表于 2015-11-7 21:51
一般都是List stus=new ArrayList();这样写,那么问题来了,这样写比我上面那样写好在哪里呢?
我重写了S ...

其实都可以啦。。
作者: 晓晓恩    时间: 2015-12-13 23:00
好吧都看见了好多腻害的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2