Java 使arraylist get方法工作以及其他问题
我正在用blueJ编码。我的目标是:1)编写一个用户类 用户: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
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
中格式化它。此外,考虑执行<代码>等于和返回people.get(pos)
;谢谢-当我这样做的时候,它说“非静态变量的人不能从静态上下文中引用。”我从addSampleData方法中删除了静态变量,编译时错误消失了,但这会导致将来的问题吗?将private Arraylist people更改为static会更好吗?现在,我在增强的for循环中遇到一个编译错误,即找不到符号-方法toArray()-我应该如何解决这个问题?因为您使用的是名为groupArray
的未知符号(成员变量)。查看我编辑过的答案,你应该使用人员
数组。修复了一些其他小错误,它全部编译=)现在,当我尝试运行它时,它会打印用户名和用户类型2次-这有什么原因吗?这是一个新问题,如果你自己找不到,你可以在新问题中发布修改过的代码。不要忘记接受有用的答案。