正确使用对象

时间:2016-03-30 18:56:41

标签: java oop

我有这个方法addPerson(在主要方面),用于设置一个人的名字。

private static Person[] addPerson(Person _person[], int _minAge, int _id){
    int personAge;
    String personName;
    Scanner scan = new Scanner(System.in);
    System.out.println("What's his age?");
        personAge = scan.nextInt();
        if(personAge >= _minAge){
            if(!_person[_id].getPerson().equals("")){
                System.out.println("Person " + _person[_id].getPerson() + " already exists.");
            }else{
                System.out.println("Enter the name of the person");
                Scanner addPerson = new Scanner(System.in);
                personName = addPerson.next();
                _person[_id].setPerson(personName);
            }
        }else{
            System.out.println("Person is not old enough");
        }
    return _person;
}

以下是我的自定义类中的方法setPerson,用于设置此人的姓名。

public void setPerson(String name){
    System.out.println("Person added");
    personName = name;
}

我知道我应该检查那个人是否已经存在于我的setPerson方法中,但我对此感到困惑。如你所见,我希望用户输入一个整数,所以我想我应该立即检查,以防止输入字符串时出现错误。

所以我的问题是应该在同一个方法中检查哪个以及我的自定义类上的方法?

2 个答案:

答案 0 :(得分:2)

您的代码(和您的问题)有点令人困惑,但根据我的理解,您想知道是否应该检查一个人是否存在于setPerson()中的数组中?

好吧,根据我从代码中收集的内容,你应该setPerson()中执行此操作,因为这是Person类中的方法。 Person类不需要了解您的Person个对象数组。

所以你现在这样做的方式可能是你最好的选择。

关于代码的一些一般提示:

无需创建新的Scanner,您可以使用自己的Scanner addPerson = new Scanner(System.in); personName = addPerson.next(); 。所以这个

personName = scan.next();

变成这个

setName()

我还建议您使用名称setPerson()而不是image_tag作为您的方法名称,如果将其实际执行的内容命名为其他方式则没有意义。< / p>

答案 1 :(得分:0)

我会这样做。但是我目前没有java,所以我没有测试这个片段。

class Person {
    private String name;

    public void setName(String name) {
        this.name = name;
    }
}

class Main {
    private static final int minAge = 22;
    private static Map<Person> addPerson(Map<Person> people, int id) {
        if(people.containsKey(id)) {
            // print that person with this id exists
            return people;
        }
        Scanner scanner = new Scanner(System.in);
        int age = scanner.nextInt();
        if(age < minAge) {
            // print that given age is invalid
            return people;
        }
        String name = scanner.next();
        people.get(id).setName(name);
        return people;
    }
}