Проверить массивы объектов на определенные значения

Я должен вывести массивы в котором есть определенное имя(второе значение массивов) и потом вывести те которые имеют актуальный месяц(четвертое значение массивов)

package com.company; 
import java.text.ParseException;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws ParseException {
    Znak[] arr = new Znak[4];
    Scanner in = new Scanner(System.in);
    arr[0] = new Znak("Тягай", "Максим", 12, 6, 1990);
    arr[1] = new Znak("Титов", "Олексей", 26, 9, 1985);
    arr[2] = new Znak("Рымар", "Анастасия", 04, 6, 1998);
    arr[3] = new Znak("Мирна", "Маша", 22, 4, 2002);
}
}

Я пробывал сделать через такой код:

List list = Arrays.asList(arr[0]);
    List list1 = Arrays.asList(arr[1]);
    List list2 = Arrays.asList(arr[2]);
    List list3 = Arrays.asList(arr[3]);
    if(list.contains("Маша")){
        System.out.println("Hello A");
    }
    if(list1.contains("Маша")){
        System.out.println("Hello B");
    }
    if(list2.contains("Маша")){
        System.out.println("Hello C");
    }
    if(list3.contains("Маша")){
        System.out.println("Hello D");
    }
    else
    {
        System.out.println("Ничего нету");
    }

Но не выводит массив объекта с определенным именем. Если надо код класса, то вот:

package com.company;
import java.util.Scanner;
public class Znak {
private String sur;
private String name;
private int date;
private int month;
private int year;

public Znak(String sur, String name, int date, int month, int year) {
    this.sur = sur;
    this.name = name;
    this.date = date;
    this.month = month;
    this.year = year;
}

public Znak() {
}

public String getSur() {

    return sur;
}

public void setSur(String sur) {

    this.sur = sur;
}
public String getName() {

    return name;
}

public void setName(String name) {

    this.name = name;
}

public int getDate() {

    return date;
}

public void setDate(int date) {

    this.date = date;
}

public int getMonth() {

    return month;
}

public void setMonth(int month) {

    this.month = month;
}

public int getYear() {

    return year;
}

public void setYear(int year) {

    this.year = year;
}

public static Znak input() {
    Scanner in = new Scanner(System.in);
    System.out.println("Введите фамилию: ");
    String sur = in.nextLine();
    System.out.println("Введите имя: ");
    String name = in.nextLine();
    System.out.println("Введите день рождения: ");
    int date = in.nextInt();
    System.out.println("Введите месяц рождения: ");
    int month = in.nextInt();
    System.out.println("Введите год рождения: ");
    int year = in.nextInt();

    return new Znak(sur, name, date, month, year);
}

public static int checkZnak(int date, int month) {
    switch (month) {
        case 1:
            if (date <= 19)
                System.out.println("Козерог");
            else
                System.out.println("Водолей");
            break;
        case 2:
            if (date <= 18)
                System.out.println("Водолей");
            else
                System.out.println("Рыбы");
            break;
        case 3:
            if (date <= 20)
                System.out.println("Рыбы");
            else
                System.out.println("Овен");
            break;
        case 4:
            if (date <= 19)
                System.out.println("Овен");
            else
                System.out.println("Телец");
            break;
        case 5:
            if (date <= 20)
                System.out.println("Телец");
            else
                System.out.println("Близнецы");
            break;
        case 6:
            if (date <= 21)
                System.out.println("Близнецы");
            else
                System.out.println("Рак");
            break;
        case 7:
            if (date <= 22)
                System.out.println("Рак");
            else
                System.out.println("Лев");
            break;
        case 8:
            if (date <= 22)
                System.out.println("Лев");
            else
                System.out.println("Дева");
            break;
        case 9:
            if (date <= 22)
                System.out.println("Дева");
            else
                System.out.println("Весы");
            break;
        case 10:
            if (date <= 22)
                System.out.println("Весы");
            else
                System.out.println("Скорпион");
            break;
        case 11:
            if (date <= 22)
                System.out.println("Скорпион");
            else
                System.out.println("Стрелец");
            break;
        case 12:
            if (date <= 21)
                System.out.println("Стрелец");
            else
                System.out.println("Козерог");
            break;
    }
    return date;
}

public String indexOf(int i) {
    return null;
}
}

Буду рад за помощь решение проблемы


Ответы (1 шт):

Автор решения: Aziz Umarov

Поэкспериментируйте с таким кодом

package test;

import java.io.IOException;
import java.util.Arrays;
import java.util.Scanner;

public class App {

  public static void main(String[] args) throws IOException {
    Znak[] arr = new Znak[4];
    Scanner in = new Scanner(System.in);
    arr[0] = new Znak("Тягай", "Максим", 12, 6, 1990);
    arr[1] = new Znak("Титов", "Олексей", 26, 9, 1985);
    arr[2] = new Znak("Рымар", "Анастасия", 04, 6, 1998);
    arr[3] = new Znak("Мирна", "Маша", 22, 4, 2002);

    Arrays.asList(arr).stream()
        .filter(item -> item.getName().equals("Маша"))
        // .filter(item -> item.getMonth() == LocalDate.now().getMonthValue()) // добавите ваше
        // условие
        .forEach(
            item -> {
              System.out.println(
                  String.format("фамилия = %s, имя = %s", item.getSur(), item.getName()));

              item.checkZnak(item.getDate(), item.getMonth());
            });
  }
}
→ Ссылка