package JavaRush;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.stream.Collectors;
public class Solution6 {
public static void main(String[] args) {
Scanner console = new Scanner(System.in);
ArrayList<Integer> listNumbers = new ArrayList<>();
while (console.hasNextLine()) {
String s = console.nextLine();
if (s.matches("^[-+]?\\d+(\\.\\d+)?$") && !s.isBlank()) {
int interimValue = Integer.valueOf(s);
listNumbers.add(interimValue);
} else {
if (listNumbers.size() > 1) {
List<Integer> collect = listNumbers.stream().sorted().distinct().collect(Collectors.toList());
int a = collect.get(1);
System.out.println(a);
return;
} else {
throw new RuntimeException();
}
}
}
}
}
Mихаил Корж
2 уровень
Не проходит валидация на отрицательное число, хотя в регулярке проверка задана
Обсуждается
Комментарии (5)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Ksenia VolkovaJava Developer в DXCMaster
20 мая 2021, 15:54
А условие задачи можно увидеть?
Проблем с отрицательными я пока не вижу. Зато регулярка у тебя написана под вещественное число, а парсишь ты в int.
Ну и непонятно, для чего нужно !s.isBlank()
0
Mихаил Корж
20 мая 2021, 15:56
Требования:
Программа должна считывать числа c клавиатуры.
Программа должна выводить число на экран.
Программа должна выводить на экран второе минимальное из введенных целых чисел.
Если введено несколько вторых минимальных чисел, необходимо вывести любое.
Считывать данные с клавиатуры необходимо в цикле while.
0
Ksenia VolkovaJava Developer в DXCMaster
20 мая 2021, 16:14
А если ввести два одинаковых числа?
0
Mихаил Корж
21 мая 2021, 08:00
получу IndexOutOfBoundsException
0
Mихаил Корж
21 мая 2021, 11:47
добавил проверку
if (listNumbers.size() > 1) {
List<Integer> collect = listNumbers.stream().sorted().distinct().collect(Collectors.toList());
collect.size();
if (collect.size() == 1) {
int b = collect.get(0);
System.out.println(b);
} else {
int a = collect.get(1);
System.out.println(a);
}
return;
0