Java 使arraylist get方法工作以及其他问题

Java 使arraylist get方法工作以及其他问题,java,arrays,arraylist,get,Java,Arrays,Arraylist,Get,我正在用blueJ编码。我的目标是:1)编写一个用户类 用户: has a username e.g 'fj3' has a userType which can be: 'user', 'editor' or 'admin' has a name e.g 'Francis' has a constructor which takes the username, userType and name as parameters has a getUsername() method has a ge

我正在用blueJ编码。我的目标是:1)编写一个用户类

用户:

has a username e.g 'fj3'
has a userType which can be: 'user', 'editor' or 'admin'
has a name e.g 'Francis'
has a constructor which takes the username, userType and name as parameters
has a getUsername() method
has a getUserType() method
has a getName() method
has a setUserType() method which takes one of the user types as a parameter 
2) 编写一个用户组类

UserGroup类必须具有用户的ArrayList

为UserGroup类编写构造函数。它应该实例化ArrayList

在UserGroup中编写一个名为.addSampleData()的方法,该方法创建10个用户,并使用ArrayList的add()方法将10个新用户对象放入ArrayList

在UserGroup中,编写一个getUser方法,该方法将int作为参数,并返回ArrayList的该插槽中的用户

在UserGroup中,在UserGroup中编写PrintUserName()方法:

使用增强的for循环(请参见上文),循环ArrayList并打印ArrayList中每个用户的用户名和用户类型

到目前为止,我得到的是:

package user;
public class User{
    public enum UserType{                           
        ADMIN, EDITOR, USER;
    }

    private String id;                             
    private UserType userPermissions;               
    private String actualName;                      

    public User(String username, UserType userType, String name){
        id = username;
        userPermissions = userType;
        actualName= name;
    } 

    public String getUsername(){
        return id;
    }

    public UserType getUserType(){
        return userPermissions;
    }       

    public String getName(){
        return actualName;
    }

    public void setUserType(UserType input){
        userPermissions = input;
    }
}
和我的用户组类:

package user;
import java.util.*;
import user.User.UserType; 

public class UserGroup{

    private ArrayList<User> people;

    public UserGroup(){
        people = new Arraylist<User>();
    }

    public static void addSampleData(String username, UserType userType, String name){
        people.add(new User(username, userType,name));
    }

    public User get(int){
        return User; 
    }

    public void printUsernames(){
        for (User user: groupArray){
            System.out.printf("%s %s\n", user.getUsername(), user.getuserType);
        }
    } 
}
包用户;
导入java.util.*;
导入user.user.UserType;
公共类用户组{
私人ArrayList人;
公共用户组(){
people=newarraylist();
}
公共静态void addSampleData(字符串用户名、用户类型用户类型、字符串名称){
添加(新用户(用户名、用户类型、名称));
}
公共用户获取(int){
返回用户;
}
public void printUsernames(){
for(用户:groupArray){
System.out.printf(“%s%s\n”,user.getUsername(),user.getuserType);
}
} 
}

这显然远未完成,但我完全被卡住了。我的第一个问题是,我不确定如何为此编写get方法。请帮我做这个!!我认为我的用户类很好,但我的用户组类远没有完成所有目标,我不知道如何实现它们

到目前为止看起来不错,有一些修正:

addSampleData()
方法不应该是静态的,因为它使用类的非静态成员。请求还声明要添加样本数据本身

因此,
getUser()
非常简单

printUsernames()
方法使用未知成员

public void addSampleData() {
    people.add(new User("pe3", UserType.ADMIN,"Peter"));
    people.add(new User("u987", UserType.EDITOR,"Udo"));
    people.add(new User("frank123", UserType.USER,"Frank"));
    // repeat ...
}

public User getUser(int idx) {
    return people.get(idx); 
}

public void printUsernames(){
    for (User user: people){
        System.out.printf("%s %s\n", user.getUsername(), user.getuserType);
    }
} 
在主方法中,则:

UserGroup grp = new UserGroup();
grp.addSampleData();
grp.printUsernames();
User u1 = grp.getUser(0);

请阅读javadoc以了解更多信息。有一个
get()
方法。您应该将
toString
方法放入
User
中,而不是在
UserGroup
中格式化它。此外,考虑执行<代码>等于和 HASCODE >,如您想使用的方法,如“代码>索引XOR/<代码>等……必须增强USER组类中的GET方法:给输入参数命名(<代码> get(int POS)< /代码>),然后返回在ArrayList正确位置找到的用户记录:
返回people.get(pos)
;谢谢-当我这样做的时候,它说“非静态变量的人不能从静态上下文中引用。”我从addSampleData方法中删除了静态变量,编译时错误消失了,但这会导致将来的问题吗?将private Arraylist people更改为static会更好吗?现在,我在增强的for循环中遇到一个编译错误,即找不到符号-方法toArray()-我应该如何解决这个问题?因为您使用的是名为
groupArray
的未知符号(成员变量)。查看我编辑过的答案,你应该使用
人员
数组。修复了一些其他小错误,它全部编译=)现在,当我尝试运行它时,它会打印用户名和用户类型2次-这有什么原因吗?这是一个新问题,如果你自己找不到,你可以在新问题中发布修改过的代码。不要忘记接受有用的答案。