Задача: Программа вводит с клавиатуры пару (число и строку) и выводит их на экран.
Новая задача: Программа вводит с клавиатуры пары (число и строку), сохраняет их в HashMap.
Пустая строка - конец ввода данных.
Числа могут повторяться. Строки всегда уникальны. Введенные данные не должны потеряться!
Затем программа выводит содержание HashMap на экран. Каждую пару с новой строки.
import java.io.*;
import java.util.Map;
import java.util.HashMap;
/*
Функциональности маловато!
*/
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
HashMap <String, Integer> list = new HashMap <String, Integer> ();
while (true) {
String s = reader.readLine();
if (s.isEmpty()) {
break;
}
try {
Integer id = Integer.parseInt(s);
String name = reader.readLine();
if (name.isEmpty()) {
break;
}
list.put(name, id);
}
catch (NumberFormatException e) {
for (Map.Entry<String, Integer> pair : list.entrySet()) {
System.out.println(pair.getKey() + " " + pair.getValue());
}
break;
}
}
for (Map.Entry<String, Integer> pair : list.entrySet()) {
System.out.println(pair.getKey() + " " + pair.getValue());
}
}
}
Если я правильно вас понял, то вы должны поправить
if (s.isEmpty()) {
break;
}
на
if (s.isEmpty()) {
return list;
}
P.S Тут многое зависит от того, что у вас за валидатор. Как я понял, это какая-то задачка с сайта или из java-rush. В проверке валидатора может как мой первый ответ пройти, так и эта правка
Переместите ваш for-цикл в отдельный метод
private void showMap(HashMap<String, Integer> list){
if(!map.isEmpty()){
for (Map.Entry<String, Integer> pair : list.entrySet()) {
System.out.println(pair.getKey() + " " + pair.getValue());
}
}
}
и тогда весь ваш класс будет выглядеть примерно так
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
HashMap <String, Integer> list = new HashMap <String, Integer> ();
while (true) {
String s = reader.readLine();
if (s.isEmpty()) {
showMap(list);
}
try {
Integer id = Integer.parseInt(s);
String name = reader.readLine();
if (name.isEmpty()) {
break;
}
list.put(name, id);
}
catch (NumberFormatException e) {
showMap(list);
break;
}
showMap(list);
}
private void showMap(HashMap<String, Integer> list){
if(!map.isEmpty()){
for (Map.Entry<String, Integer> pair : list.entrySet()) {
System.out.println(pair.getKey() + " " + pair.getValue());
}
}else {
return null;
}
}
И тут надо смотреть, что от вас хочет валидатор.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Есть сокеты на JavaВсе данные передаются в виде объектов(хотел как проще, а вышло как обычно)
Запускаю программу в режиме отладкиПрограмма выполняется, но в консоли надпись красным цветом: