Проблема с массивом, не смог ничего добавить к нему - PullRequest
0 голосов
/ 07 октября 2019

У меня есть родительский класс User и класс с массивом пользователей в качестве атрибута в этом классе. У меня есть этот метод для подписи пользователей в ArrayList:

public Class UserArray extends User
public static ArrayList<User> users = new ArrayList<User>(50);

public static void signUser(User u) {
    for(User f: users) {
        if(u.name.equals(f.name)) {
            System.out.println("User already exists");
        }
        else {
            users.add(u);
            System.out.println("User signed");
        }
    }
}

И у меня есть класс контроллераэто должно вызвать этот метод, и я попытался двумя способами (с и без статического):

со статическим:

public Class Controller extends UserArray
public void signUseron(User u){
    UserArray.signUser(u);
    System.out.println("Usuario cadastrado com sucesso");
}

И вызвал этот метод в Main, как это:

Controller.signUser(user object);

И тоже пробовал без статики, но я не смог сделать метод sign, и я не получаю никаких ошибок, но мои пользователи массива имеют размер 0, и я могу добавить что-нибудь к этому.

Ответы [ 2 ]

1 голос
/ 07 октября 2019

Джит указал на проблему вашего кода, я просто хочу предложить другое возможное решение.

Возможное решение:

public static void signUser(User u) {
        for(User f: users) {
            if(u.name.equals(f.name)) {
                System.out.println("User already exists");
                return;
            }
        }
        users.add(u);
        System.out.println("User signed");
     }
0 голосов
/ 07 октября 2019

Ваш код:

public Class UserArray extends User
public static ArrayList<User> users = new ArrayList<User>(50);

public static void signUser(User u) {
    for(User f: users) {
        if(u.name.equals(f.name)) {
            System.out.println("User already exists");
        }
        else {
            users.add(u);
            System.out.println("User signed");
        }
    }
}

Позволяет отладить ваш код:

  1. Самый первый раз, когда ваш метод signUser () вызывает, затем вы пытаетесь перебрать пользователей (Arraylist), и он пуст в первый раз. Таким образом, ничего не будет добавлено в пользователей.
  2. Второй раз, в третий раз ... в девятый раз ничего не добавится в ваш список.

Возможное решение:

public static void signUser(User u) {
      if(!users.isEmpty()){
        for(User f: users) {
            if(u.name.equals(f.name)) {
                System.out.println("User already exists");
            }
            else {
                users.add(u);
                System.out.println("User signed");
            }
        }
      } else{
      users.add(u.name);
      }
     }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...