为什么这不会在此ArrayList中输出我的用户属性?

时间:2016-11-02 23:24:18

标签: java arraylist

所以程序没有指定任何错误,但它没有输出我想要的内容。我创建了一个Array List,它应该输出用户的详细信息,即用户名,用户类型和名称。我在我的主要方法中调用了这个类,但没有输出。我是Java的新手,所以如果有人可以帮我解决这个问题,以便编译用户的属性那么这对我自己和可能遇到同样问题的其他初学者都有很大的帮助。 。这是代码:

UserGroup类(其中创建了ArrayList

package main;
import java.util.ArrayList;

public class UserGroup {

    ArrayList<User> userGroup = new ArrayList<>();
    User userOne;

    public void addSampleData(String username, String userType, String name) {

    userGroup.add(new User("LeeB123", "Staff", "Lee"));

}

    public User getUser(int index)  {

    return userGroup.get(0);

}

    public void printusername(){

       for (User x : userGroup) {
    System.out.println(x);
} }
}

用户类

package main;
class User {

  String username;
  String userType;
  String name;


    User(String username, String userType, String name) {

    this.username = username;
    this.userType = userType;
    this.name = name;
    }

  public String getUsername() {
      return username;
  }

  public String getUserType() {
      return userType;
  }

   public String getName() {
      return name;
  }

  public String setUserType(String admin) {
      return userType = admin;
  }

}

主要课程

package main;

public class Main {
 public static void main(String[] args) {

    public User callUserGroup; {  

     UserGroup userGroupObject = new UserGroup();

 System.out.println(userGroupObject.getUser(0)); 
 }

}

我理解某些部分可能不相关/不高效或不必要,但我是初学者,所以我仍然习惯这些概念,所以非常感谢一些帮助,谢谢。

2 个答案:

答案 0 :(得分:0)

首先没有调用添加samplesatamethod。因此,列表中没有数据。

您需要添加构造函数或显式调用userGroup.addSampleData()方法。

添加如下构造函数:

 public UserGroup() {

    userGroup.add(new User("LeeB123", "Staff", "Lee"));

}

或致电您的主要班级:

userGroupObject.addSampleData("L1",""staff", "LEE");

答案 1 :(得分:0)

我将分解UserGroup类和main。

的一些问题

UserGroup类:基本上这是一组用户。因此,您需要的唯一属性是用户的ArrayList。这里缺少的主要是构造函数。您无法创建新的UserGroup对象。我创建了一个不带任何内容的构造函数,并向userGroup添加了一些数据。在addSampleData方法中,您将接收三个字符串变量,然后使用这些变量创建一个新的User对象,并将其添加到userGroup。由于userGroup数组由User个对象组成,因此我将传入的变量从三个字符串变量更改为一个User变量。我将名称addSampleData方法更改为addUser。以下更改应解决刚才描述的问题。

编辑:在UserGroup类中添加了缺少的getUserGroup()属性getter。

ArrayList<User> userGroup = new ArrayList<>();
// User userOne;
public UserGroup()
{
  addUser(new User("LeeB123", "Staff", "Lee"));
  addUser(new User("XLeeB123", "XStaff", "XLee"));
  addUser(new User("XXLeeB123", "XXStaff", "XXLee"));
}

public void addUser(User inUser)
{
  //userGroup.add(new User("LeeB123", "Staff", "Lee"));
  userGroup.add(inUser);
}
public ArrayList<User> getUserGroup() {
    return userGroup;
}

方法:由于userGroupObject有一个User个数组,我在每个循环中使用a来输出userGroupObject中的所有用户。< / p>

//public User callUserGroup;   
UserGroup userGroupObject = new UserGroup();

for (User curUser : userGroupObject.getUserGroup())
{
   System.out.println(curUser.toString()); 
}

编辑2:将toString方法添加到用户类。

@Override
public String toString() {
    return "User username=" + username + ", userType=" + userType + ", name=" + name;
}

希望这有帮助。