【问题标题】:Java vector capacity finding the vector sizeJava向量容量查找向量大小
【发布时间】:2013-12-16 19:24:42
【问题描述】:

我正在尝试获取向量的内容。 我有一个存储用户详细信息(例如名称和密码)的类:

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<User> {
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);


}                         

【问题讨论】:

    标签: java swing


    【解决方案1】:

    使用 size() 代替 capacity()。

    容量():

    返回当前容量(其内部数据数组的长度,保存在该向量的字段elementData中)

    尺寸():

    返回此向量中的分量数。

    查看文档here

    【讨论】:

      【解决方案2】:

      您使用的capacity()size() 不同。请参阅此 SO 答案以很好地介绍两者之间的差异:https://stackoverflow.com/a/2787405/1370556

      简而言之,您需要循环访问size()

      for(int i = 0; i < size(); i++){
      

      顺便说一句,您可能想要切换到 ArrayLists。请务必阅读 Java 中 VectorArrayList 之间的区别:Why is Java Vector class considered obsolete or deprecated?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-02
        • 2015-10-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-02
        • 1970-01-01
        相关资源
        最近更新 更多