В джаве можно вызывать методы void с пустыми параметрами.
Трудновато понять, какие именно параметры передавать в метод.
Получить значение переменной из другого метода напрямую (по имени) не видит.
_
"Программа не должна выводить текст на экран". - а как я увижу результат?
Неудобно, что дается сразу нерабочий код, который не требуется выводить на экран -
отследить ошибку выполнения гораздо труднее.
==
В порядке бреда: если нужно именно кол-во совпадающих имен,
то можно создать новую map (или set) с ними как с ключами и сравнить ее размер со старой map:
поскольку ключи уникальны, разница и составит кол-во повторяющихся значений.
====
переменную нужно объявить public в начале класса, чтобы видеть ее в нем.
static не требут создания объекта для вызова
Но при вызове из другого метода public static ArrayList = null
Ага, чтобы этого не было, его нужно не только объявить, но и проинициализировать
public static ArrayList<String> strings = new ArrayList<>();
===
у одного человека имя не может совпадать с самим собой,
значит, если речь о совпадении имени, то от двух. (если есть разница в кол-ве элементов set, то +1. Т.е. совпадают 3 имени, одно из них будет уником, поэтому 10-8 даст 2 вместо ожидаемых 3).
+++
Сделал карту, сразу вывел ключи и значения в 2 списка. Обратился к публичным переменным из методов – создал set, чтобы отфильтровать уники). Из main вызвал map, из нее – метод с именем, а из него – метод с фамилией. Закомментировал вывод, чтобы валидатор принял.
_
Считает правильно, но валидатор ругается на последние 2 условия
package com.javarush.task.task08.task0815;
import java.io.*;
import java.util.*;
/*
Перепись населения
*/
public class Solution {
public static ArrayList<String> strings = new ArrayList<>();
public static ArrayList<String> strings2 = new ArrayList<>();
public static int ten = 10;
public static Map<String, String> createMap() {
Map<String, String> map = new HashMap<String, String>();
map.put("арбуз", "ягода");
map.put("банан", "трава");
map.put("вишня", "ягода");
map.put("груша", "фрукт");
map.put("дыня", "овощ");
map.put("ежевика", "куст");
map.put("женьшень", "корень");
map.put("земляника", "ягода");
map.put("ирис", "цветок");
map.put("картофель", "клубень");
Iterator<Map.Entry<String, String>> iterator = map.entrySet().iterator();
while (iterator.hasNext())
{
Map.Entry<String, String> pair = iterator.next();
String key = pair.getKey();
String value = pair.getValue();
strings.add(key);
}
Iterator<Map.Entry<String, String>> iterator2 = map.entrySet().iterator();
while (iterator2.hasNext())
{
Map.Entry<String, String> pair = iterator2.next();
String key = pair.getKey();
String value = pair.getValue();
strings2.add(value);
}
getCountTheSameFirstName();
return map;
}
public static int getCountTheSameFirstName() {
Set<String> set2=new LinkedHashSet<>(strings2);
int n = set2.size();
int n2=0;
if (n == ten)
{
n2 = 0;
}
else
{
n2 = 10-n+1;
}
//System.out.println(n2);
getCountTheSameLastName();
return n2;
}
public static int getCountTheSameLastName() {
Set<String> set=new LinkedHashSet<>(strings);
int s = set.size();
int s2=0;
if (s == ten)
{
s2 = 0;
}
else
{
s2 = 10-s+1;
}
// System.out.println(s2);
return s2;
}
public static void main(String[] args) {
createMap();
}
}