无法将我自己的类导入另一个类

时间:2013-11-10 00:02:17

标签: java arrays import foreach

我用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类无法完成所有目标,我不知道该怎么做!!

3 个答案:

答案 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)

  1. 规范要求UserGroup的用户列表 在构造函数中实例化。因此,它应该不是 static但是一个实例变量:

    public class UserGroup {
    
        private ArrayList<User> people;
    
        public UserGroup() {
            people = new ArrayList<User>();
        }
        // ...
    }
    

    这样,您可以创建多个UserGroup个实例,每个实例都有自己的用户列表。使用静态变量,这是不可能的。

  2. 您的getUser(int)方法无法完成预期的操作 不会编译。您将返回类型User而不是 特定的User实例。
  3. 用于打印用户名的增强型for循环是一个自由浮动的代码块。它应该在您的规范中规定的方法printUsernames()内。
  4. 您的User课程可以正常使用,但其实例变量应为private而不是public
  5. 要解决导入问题,请将您的User课程放入包中,例如: user,并UserGroup导入User.UserType(“用户。”部分,因为UserTypeUser内的一个内部类)。 / p>

    package user;
    public class User{
    // ...
    }
    
    package user;
    import java.util.*; 
    import user.User.UserType;
    
    public class UserGroup{
    // ...
    }