我创建了一个带有名为reg
的寄存器(List)的简单程序。我还创建了一个名为Name
的类,它由firstName
和familyName
组成。我必须创建一个返回true
或false
的方法,具体取决于是否存在具有相应名字的名称。例如,如果有一个名字" David Long"我问是否"大卫"列表中应该返回true
。我把它们分别放在不同的课程上,我很困惑如何链接'他们。我有Name
,Person
,Register
和RegisterTest
个类。 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 + "]";
}
}
答案 0 :(得分:1)
names
中的Register
变量是ArrayList
个Person
个对象,而不是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()函数。你会怎样做才能使它正常工作,因为我觉得我的代码在这里引起了一些混乱。