题目描述:
定义一个有关人的Person
类,内含属性:
String name
、int age
、boolean gender
、int id
,所有的变量必须为私有(private
)。
**注意:**属性顺序请严格按照上述顺序依次出现。
1.编写无参构造函数:
- 打印"This is constructor"。
- 将name,age,gender,id按照
name,age,gender,id
格式输出
2.编写有参构造函数
依次对name,age,gender
赋值。
3.覆盖toString函数:
按照格式:类名 [name=, age=, gender=, id=]
输出。建议使用Eclipse自动生成.
4.对每个属性生成setter/getter方法
5.main方法中
- 首先从屏幕读取n,代表要创建的对象个数。
- 然后输入n行name age gender , 调用上面2编写的有参构造函数新建对象。
- 然后将刚才创建的所有对象
逆序
输出。 - 接下来使用无参构造函数新建一个Person对象,并直接打印该对象。
输入样例:
3
a 11 false
b 12 true
c 10 false
输出样例:
Person [name=c, age=10, gender=false, id=0]
Person [name=b, age=12, gender=true, id=0]
Person [name=a, age=11, gender=false, id=0]
This is constructor
null,0,false,0
Person [name=null, age=0, gender=false, id=0]
答案:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
String[] name = new String[n];
int[] age = new int[n];
boolean[] sex = new boolean[n];
for (int i = 0; i < n; i++) {
name[i] = sc.next();
age[i] = sc.nextInt();
String str = sc.next();
sex[i] = "true".equals(str);
}
for (int i = n-1 ;i >=0; i--) {
Person p = new Person(name[i],age[i],sex[i]);
System.out.println(p);
}
Person p = new Person();
System.out.println(p);
}
}
class Person{
private String name;
private int age;
private boolean sex;
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public Person() {
System.out.println("This is constructor");
System.out.println(name+","+age+","+sex+","+id);
}
public Person(String name, int age, boolean sex) {
this.name = name;
this.age = age;
this.sex = sex;
}
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;
}
public boolean getSex() {
return sex;
}
public void setSex(boolean sex) {
this.sex = sex;
}
public String toString() {
return "Person [name=" + name + ", age=" + age + ", gender=" + sex + ", id=" + id + "]";
}
}
解析:
主要就是考验每一次调度构造方法,都会执行一次构造方法里的内容