返回true或false的方法,具体取决于名称是否与相应的名字一起存在

时间:2014-11-26 16:49:42

标签: java

我创建了一个带有名为reg的寄存器(List)的简单程序。我还创建了一个名为Name的类,它由firstNamefamilyName组成。我必须创建一个返回truefalse的方法,具体取决于是否存在具有相应名字的名称。例如,如果有一个名字" David Long"我问是否"大卫"列表中应该返回true。我把它们分别放在不同的课程上,我很困惑如何链接'他们。我有NamePersonRegisterRegisterTest个类。 RegisterTest正在测试我的程序,而其余的包含运行它的代码。

我已尝试将类似内容放入Register类:

public boolean existsOrNot(){
    if (names.contains("Tom")) {
        return true;
    } else {
        return false;
    }
}

然后进入我的RegisterTest类,其中public static void main(String [] args)是:

    System.out.println(existsOrNot());

这就是我的RegisterTest的样子:

public class RegisterTest {

public static void main(String[] args) {
    Register reg = new Register();

    reg.addPerson(new Person(new Name("John", "Smith")));
    reg.addPerson(new Person(new Name("Tom", "Morgan")));
    reg.addPerson(new Person(new Name("Robert", "Man")));
    reg.addPerson(new Person(new Name("Jamie", "Young")));
    reg.addPerson(new Person(new Name("David", "Long")));

    System.out.println("People:\n" + reg.toString() + "\n");

    System.out.println("List of people's names:");
    for (int i=0;i < reg.size(); i++) {
        System.out.println(reg.getPerson(i).getName().getFullName());
    }

    System.out.println("======================");

    System.out.println("Number of people: " + reg.size());

这里是Register类:

import java.util.ArrayList;

public class Register {

//Fields
private ArrayList<Person> names;


//Constructors
public Register() {
    names = new ArrayList<Person>();
}


//Methods
public void addPerson(Person n) {
    names.add(n);
}

public void removePerson(int pos) {
    names.remove(pos);
}

public Person getPerson(int pos) {
    return names.get(pos);
}

public int size() {
    return names.size();
}

public void clearRegister() {
    names.clear();
}

public boolean isRegisterEmpty() {
    return names.isEmpty();
}

public boolean existsOrNot() {
    if (names.contains("Tom")) {
        return true;
    } else {
        return false;
    }
}

public String toString() {
    return "Register:[name=" + names + "]";
}

}

4 个答案:

答案 0 :(得分:1)

names中的Register变量是ArrayListPerson个对象,而不是Name个对象。看起来Person是使用Name构建的,但Person不是Name。因此,contains方法正在Person上查找匹配项,并且永远不会找到匹配项。

您需要遍历Person个对象,并查看每个Name个对象以查看第一个元素是否与"Tom"匹配,以便做你想做的事。

答案 1 :(得分:1)

添加到@pjs,您需要执行类似..

的操作
    public boolean existsOrNot() {
      for (Person person : names){
            if ("Tom".equals(person.getName().getFirstName()){
              return true;
            }
         }
      return false
   }

答案 2 :(得分:0)

当您将函数放入Register类时,您需要从对象中调用它(如果该类是静态的,您将不需要实例但仍然可以从类中调用它)

这应该适用于您的RegisterTest类

System.out.println(reg.existsOrNot());

Register类中的该函数成为reg对象的函数。

答案 3 :(得分:-1)

好的,我们假装没有编写existsOrNot()函数。你会怎样做才能使它正常工作,因为我觉得我的代码在这里引起了一些混乱。