第一次创建自己的构造函数。
import java.util.Scanner;
public class Person {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Please enter your name");
PersonDetails a = new PersonDetails(input.nextLine());
System.out.println("Enter your age");
PersonDetails b = new PersonDetails(input.nextInt());
System.out.println("So your name is" + " " + a.getName() + " and you are" + " " + a.getAge());
}
}
PersonDetails 类
public class PersonDetails {
private String name;
private int age;
public PersonDetails(String initialName) {
if(initialName.equals("Stephen")) {
name = initialName;
}
else{
System.out.println("Access denied");
System.exit(0);
}
}
public String getName() {
return name;
}
public PersonDetails(int initialAge) {
if(initialAge >= 18) {
age = initialAge;
}
else{
System.out.println("You are a child");
System.exit(0);
}
}
public int getAge() {
return age;
}
}
输出是:
请输入您的姓名
斯蒂芬
输入您的年龄
19
所以你的名字是斯蒂芬,你是 0
当我输入 Stephen 然后输入数字 19 时。为什么它是零?
最佳答案
您创建了 2 个 PersonDetails
实例。 a
实例只设置了名字,b
实例只设置了年龄。
您可以创建一个新的构造函数,将姓名和年龄作为参数:
public PersonDetails(String initialName, int initialAge) {
if (initialName.equals("Stephen")) {
name = initialName;
}
else {
System.out.println("Access denied");
System.exit(0);
}
if (initialAge >= 18) {
age = initialAge;
}
else {
System.out.println("You are a child");
System.exit(0);
}
}
然后,按如下方式使用您的类:
Scanner input = new Scanner(System.in);
System.out.println("Please enter your name");
String name = input.nextLine();
System.out.println("Enter your age");
Int age = input.nextInt();
PersonDetails a = new PersonDetails(name, age);
System.out.println("So your name is" + " " + a.getName() + " and you are" + " " + a.getAge());
我也不建议在类的构造函数中使用 System.exit(0);
。在这种情况下最好抛出一个异常,可能在构造函数之外(所以在其他地方进行验证)。
关于Java 构造函数 - 为什么年龄返回为零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33545543/