@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'.
Кто знает как исправить это?
  • Вопрос задан
  • 74 просмотра
Пригласить эксперта
Ответы на вопрос 1
LaRN
@LaRN
Senior Developer
Массив у вас объявлен как Znak [] String, но далее вы делаете так:
String goal = in.nextLine();
if (String[i] == goal)
Т.е. переменная goal типа String сравнивает с элементом массива String[i], который имеет тип Znak.
Вы себя запутал назвав массив String.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
XCritical Software Санкт-Петербург
До 370 000 ₽
MediaSoft Ульяновск
от 80 000 до 150 000 ₽
от 180 000 до 210 000 ₽