我用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类
- UserGroup类必须具有UsersList的ArrayList。
为UserGroup类编写构造函数。它应该实例化ArrayList。
在UserGroup中编写一个名为.addSampleData()的方法,该方法创建10个用户,并使用ArrayList的add()方法将10个新的User对象放入ArrayList中。
在UserGroup中编写一个getUser方法,该方法将int作为参数并返回ArrayList的该槽中的User。
在UserGroup中,在UserGroup中编写printUsernames()方法:
使用增强的for循环(参见上文),遍历ArrayList并在ArrayList中打印每个用户的用户名和userType。
到目前为止我所拥有的是:
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;
}
}
我的UserGroup类:
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 String getUser(int list){
return User;
}
public void printUsernames(){
for (User user: groupArray){
System.out.printf("%s %s\n", user.getUsername(), user.getuserType);
}
}
}
这显然远没有完成,但我完全陷入困境。我的第一个问题是“for(User user:groupArray)”正在给我错误的非法启动类型。请在这件事上给予我帮助!!我认为我的User类很好,但我的UserGroup类无法完成所有目标,我不知道该怎么做!!
答案 0 :(得分:0)
要遍历arraylist中的用户,增强的for循环应如下所示:
for (User user: groupArray)
System.out.printf("%s %s\n", user.getUsername(), user.getuserType);
编辑: 为了更有效地遵循问题并更加传统,应该声明ArrayList,然后在。
之后实例化private static ArrayList<User> UserGroup;
public UserGroup() {
UserGroup = new ArrayList<>();
}
答案 1 :(得分:0)
您在导入中使用“套餐”似乎很可疑:
import package.User.UserType;
通常这将是
import User.UserType;
或实际上更常见:
import user.UserType;
因为按惯例的包名应以小写字母开头。
将来,如果包裹名称与问题相关,请务必在您的代码中包含您的包裹声明。
答案 2 :(得分:0)
规范要求UserGroup
的用户列表
在构造函数中实例化。因此,它应该不是
static但是一个实例变量:
public class UserGroup {
private ArrayList<User> people;
public UserGroup() {
people = new ArrayList<User>();
}
// ...
}
这样,您可以创建多个UserGroup
个实例,每个实例都有自己的用户列表。使用静态变量,这是不可能的。
getUser(int)
方法无法完成预期的操作
不会编译。您将返回类型User
而不是
特定的User
实例。printUsernames()
内。User
课程可以正常使用,但其实例变量应为private
而不是public
。要解决导入问题,请将您的User
课程放入包中,例如: user
,并UserGroup
导入User.UserType
(“用户。”部分,因为UserType
是User
内的一个内部类)。 / p>
package user;
public class User{
// ...
}
package user;
import java.util.*;
import user.User.UserType;
public class UserGroup{
// ...
}