public class Start {
public Register theReg = new Register();
public static Start go = new Start();
public static void main(String[] args) {
Register theReg = new Register();
go.regUsers();
if(theReg.logIn("jsmith","password")) {
System.out.println("You're logged in as " +
theReg.userLoggedIn.getName());
} else {
System.out.println("dang");
}
}
public void regUsers() {
Student regJoe =
theReg.regSeniorStaff("Joe smith", "password", "jsmith", 1);
}
}
public class Register {
public ArrayList<People> users;
public People userLoggedIn;
public Register () {
users = new ArrayList<People>();
users.add(new Student("john","password","jo",1));
userLoggedIn = null;
}
public Student regStudent(String name, String password,
String username, int stuId) {
Student s = new Student(name, password, username, stuId);
users.add(s);
return s;
}
}
我想我错过了一些愚蠢的事情。像....
start方法将创建一个新的Register
对象,其ArrayList
。然后,它开始使用像regStudent
这样的方法开始注册用户。但是,只有Register
上的构造函数允许我向ArrayList
添加对象;稍后调用方法做同样的事情就是不添加它们。它创建对象但不能添加它们。也无法删除内容,只有.get
可以使用。
任何帮助都会很棒,谢谢!
答案 0 :(得分:3)
看起来好像隐藏了theReg
全局var。您最有可能查询全局,并且看到只有构造函数添加的项目在您的ArrayList中。
public class Start {
public Register theReg = new Register(); //<<---- your global var
public static Start go = new Start();
public static void main(String[] args) {
Register theReg = new Register(); // <<---- hiding the global
go.regUsers();
if(theReg.logIn("jsmith","password"))
System.out.println("You're logged in as " + theReg.userLoggedIn.getName());
else
System.out.println("dang");
}
}
答案 1 :(得分:2)
这是学习如何使用调试器的好时机。 Eclipse有一个很好的调试器;您可以在第users.add(s)
行设置断点,并检查列表users
的内容。
您可能还想仔细检查在执行期间是否正在调用您的regStudent方法。如果您正在使用Eclipse,则可以右键单击并在工作区中查找对该方法的所有引用,并确保在执行期间调用其中一个。
答案 2 :(得分:1)
你知道如何使用课程吗?这个例子中的命名没有多大意义。为什么“注册”具有“userLoggedIn”“People”对象?如果那是一个“人”对象,那会不会更有意义呢?
Register r = new Register().
r.regStudent( ... );
r.regStudent( ... );
应该可以正常工作。
我的猜测是你有这样的事情:
public static void registerStudent()
{
Register r = new Register();
r.add( ... );
}
我是对的吗?
你认为我们可以阅读思想,所以我试了一下。听起来你可能会反复实例化你的寄存器对象,而不是实际持有一个引用并在其上调用方法。这会产生你描述的行为。
修改强>
看起来你不知道如何使用类。这是一个教程:
http://java.sun.com/docs/books/tutorial/java/javaOO/classes.html
答案 3 :(得分:1)
您的错误是您有两个变量名称theReg
- 一个是Start
类的实例成员,另一个是main()
中的局部变量} 方法。然后,您将一个人添加到其中一个Register
个实例中,并询问另一个人是否已添加此人。