Wylistowanie danych z tabeli, po określonym warunku.

0

Cześć
na dzień dobry ... dzień dobry od bardzo początkującego i raczkującego po Javovych linijach, tak że proszę o wyrozumiałość.

Zaciąłem się na pisaniu kodu w miejscu gdzie muszę wyciągnąć z tabeli wartości (users) z wiekiem powyżej średniej wieku całej grupy.
Proszę o wskazówkę w którą stronę mam iść.

=====

public class User {
public String userName;
public int age;

public User(String userName, int age) {
    this.userName = userName;
    this.age = age;
}

public static void main(String[] args) {
    //String[] users = new String[5];
    User tomek = new User("Tomek", 31);
    User bartek = new User("Bartek", 18);
    User magda = new User("Magda", 19);
    User szymon = new User("Szymon", 6);
    User karol = new User("Karol", 3);
    User[] users = {tomek, bartek, magda, szymon, karol};

    int result = 0;
    for (int i = 0; i < 5; i++) {
        result = result + users[i].age;
        //System.out.println(result); wyświetla sumę age
    }
    int avg = result / users.length;
    System.out.println("średni wiek to " + avg + " lat");

    for (int i=0; i<users.length; i++) {
        if (> i);

        System.out.println(users[i]);

    }
}
2

Kodem dla początkującego:

  1. Zmień dostęp dla name i age na private i dodaj gettery.
  2. Tworzysz sobie nową tablicę / listę do której wrzucisz osoby starsze niż średnia wieku.
  3. Przechodzisz pętlą po tablicy i sprawdzasz czy wiek > średniej
List<User> olderUsers = new ArrayList<>();

for (User user : users) {
   if(user.getAge() > avg) {
     olderUsers.add(user);
  }
}

Gdybyś chciał to zrobić szybciej, streamami:

List<User> olderUsers = Arrays.stream(users).filter(user -> user.getAge() > avg).collect(Collectors.toList());
0

Dla mnie tak było by najwygodniej na początku bez stream'ów.

public class User {
    private String userName;
    private int age;

     public User(String userName, int age) {
        this.userName = userName;
        this.age = age;
    }


    public static int userAVG(User[] users) {
        int result = 0;

        for (int i = 0; i < users.length; i++) {
            result = result + users[i].age;

        }
        return result / users.length;
    }

    public static void main(String[] args) {

        User tomek = new User("Tomek", 31);
        User bartek = new User("Bartek", 18);
        User magda = new User("Magda", 19);
        User szymon = new User("Szymon", 6);
        User karol = new User("Karol", 3);
        User[] users = {tomek, bartek, magda, szymon, karol};


        System.out.println("średni wiek to " + userAVG(users) + " lat");

        for (User user : users) {
            if (user.age > userAVG(users)) {
                System.out.println("Studenci powyżej :" + user.userName);
            }
        }


    }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1