@Sawayadi

Как выполнить отбор массива кода с классом?

Мне надо в коде Main.java выполнить условие отбора массива:
-Отобрать людей с определенным именем(второе слово в первом значении);
-Вывести массив с сегоднешним месяцем;
Код Main.java:
package com.company;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;

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

        Znak men = Znak.input();

        Date date = new SimpleDateFormat("dd.MM.yyyy").parse(men.getDateBirthday());
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        int monthBirthday = cal.get(Calendar.MONTH) + 1;
        int dayBirthday = cal.get(Calendar.DAY_OF_MONTH);
        System.out.println("Знак зодиака: " + men.getFIO());
        Znak.checkZnak(monthBirthday, dayBirthday);

        Znak [] String = new Znak [4];
        String[0] = new Znak("Тягай Максим", "12.06.1990");
        String[1] = new Znak("Титов Олексей", "26.09.1985");
        String[2] = new Znak("Рымар Анастасия", "04.06.1998");
        String[3] = new Znak("Мирна Маша", "22.04.2002");
        for (int i = 0; i < 4; i++) {
            Scanner in = null;
            System.out.print("Ведите какое имя вы хотите вывести: ");
            String goal = in.nextLine();
            if (String[i] == goal)
            {
                System.out.println(String[i]);
            }
        }
    }
}

Код класса:
package com.company;

import java.util.Scanner;

public class Znak {
    private String FIO;
    private String dateBirthday;

    public Znak(String FIO, String dateBirthday) {
        this.FIO = FIO;
        this.dateBirthday = dateBirthday;
    }

    public Znak() {
    }

    public String getFIO() {

        return FIO;
    }

    public void setFIO(String FIO) {

        this.FIO = FIO;
    }

    public String getDateBirthday() {

        return dateBirthday;
    }

    public void setDateBirthday(String dateBirthday) {

        this.dateBirthday = dateBirthday;
    }

    public static Znak input() {
        Scanner in = new Scanner(System.in);
        System.out.println("Введите фамилию и имя: ");
        String FIO = in.nextLine();
        System.out.println("Введите дату рождения (дд.мм.гггг): ");
        String date = in.nextLine();

        return new Znak(FIO, date);
    }

    public static void checkZnak(int monthBirthday, int dayBirthday) {
        switch (monthBirthday) {
            case 1:
                if (dayBirthday >= 21)
                    System.out.println("Водолей");
                System.out.println("Козерог");
                break;
            case 2:
                if (dayBirthday >= 21)
                    System.out.println("Рыбы");
                System.out.println("Водолей");
                break;
            case 3:
                if (dayBirthday >= 21)
                    System.out.println("Овен");
                System.out.println("Рыбы");
                break;
            case 4:
                if (dayBirthday >= 21)
                    System.out.println("Телец");
                System.out.println("Овен");
                break;
            case 5:
                if (dayBirthday >= 21)
                    System.out.println("Близнецы");
                System.out.println("Телец");
                break;
            case 6:
                if (dayBirthday >= 22)
                    System.out.println("Рак");
                System.out.println("Близнецы");
                break;
            case 7:
                if (dayBirthday >= 23)
                    System.out.println("Лев");
                System.out.println("Рак");
                break;
            case 8:
                if (dayBirthday >= 24)
                    System.out.println("Дева");
                System.out.println("Лев");
                break;
            case 9:
                if (dayBirthday >= 24)
                    System.out.println("Весы");
                System.out.println("Дева");
                break;
            case 10:
                if (dayBirthday >= 24)
                    System.out.println("Скорпион");
                System.out.println("Весы");
                break;
            case 11:
                if (dayBirthday >= 23)
                    System.out.println("Стрелец");
                System.out.println("Скорпион");
                break;
            case 12:
                if (dayBirthday >= 22)
                    System.out.println("Козерог");
                System.out.println("Стрелец");
                break;
            default:
                System.out.println("Такого месяца не существует!!!");
                break;
        }
    }
}

Я начала писать
for (int i = 0; i < 4; i++) {
            Scanner in = null;
            System.out.print("Ведите какое имя вы хотите вывести: ");
            String goal = in.nextLine();
            if (String[i] == goal)
            {
                System.out.println(String[i]);
            }
        }
, но выводит ошибку: Incompatible types. Found: 'java.lang.String', required: 'com.company.Znak'.
Кто знает как исправить это?
  • Вопрос задан
  • 81 просмотр
Пригласить эксперта
Ответы на вопрос 1
LaRN
@LaRN
Senior Developer
Массив у вас объявлен как Znak [] String, но далее вы делаете так:
String goal = in.nextLine();
if (String[i] == goal)
Т.е. переменная goal типа String сравнивает с элементом массива String[i], который имеет тип Znak.
Вы себя запутал назвав массив String.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Хабаровск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽