Проверить массивы объектов на определенные значения
Я должен вывести массивы в котором есть определенное имя(второе значение массивов) и потом вывести те которые имеют актуальный месяц(четвертое значение массивов)
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());
});
}
}