Java矢量容量找到矢量大小
我试图获取向量的内容。 我有一个类存储用户详细信息,如名称和密码:
package Login; /** * * @author Kutoma */ public class User{ private String name; private String password; public User(String aName, String password){ name = aName; this.password = password; } public boolean checkPassword(String pass) { if(password.equals(pass)) return true; else return false; } public String getName(){ return name; } public String getPassword(){ return password; } }
然后我有一个名为setOfUsers的类,它添加用户并找到他们的名字:
package Login; public class SetOfUsers extends Vector { private static SetOfUsers register = null; public SetOfUsers(){ super(); User temp = new User("Adam","12345"); add(temp); } public static SetOfUsers getInstance(){ if (register == null) { register = new SetOfUsers(); } return register; } public void addUser(User aUser){ super.add(aUser); } public User findUserByName(String name) { for(int i = 0; i < capacity(); i++){ User user = elementAt(i); if(user.getName().equals(name)){ return user; } } return null; }
目前我收到此错误java.lang.ArrayIndexOutOfBoundsException:1> = 1但是,我已经使用容量来查找向量的大小,不知道我在哪里出错了。 单击登录按钮时,我的主程序具有以下代码,它应打印出用户详细信息
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: SetOfUsers register = SetOfUsers.getInstance(); String name = nameText.getText(); User user = register.findUserByName(name); String passTxt = passText.getText(); user = register.findUserByName(passTxt); System.out.print(user); }
使用size()而不是capacity()。
容量():
返回当前容量(其内部数据数组的长度,保存在此向量的字段elementData中)
尺寸():
返回此向量中的组件数。
在这里查看文档。
您使用的capacity()
与size()
。 请参阅此SO答案,了解两者之间的差异: https : //stackoverflow.com/a/2787405/1370556 。
简而言之,您需要循环遍历size()
:
for(int i = 0; i < size(); i++){
另外,您可能希望切换到ArrayLists。 请务必阅读Java中Vector
和ArrayList
之间的差异: 为什么Java Vector类被认为已过时或已弃用? 。