Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
0 / 0 / 0
Регистрация: 11.10.2012
Сообщений: 34

Строка состоит из натуральных чисел, разделенных пробелом, и диапазонов чисел

17.02.2014, 09:41. Показов 2967. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Строка состоит из натуральных чисел, разделенных пробелом, и диапазонов чисел (начальное число-тире-конечное число). Удалить из строки все числа, входящие в эти диапазоны. Оставшиеся числа вывести на экран по возрастанию (диапазоны не выводить).

Входные данные:
15 9 2 5 3-6 1 3 7-10
Выходные данные:
1 2 15
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.02.2014, 09:41
Ответы с готовыми решениями:

Строка состоит из натуральных чисел, разделенных пробелом. Определить цифры, не входящие ни в одно их этих чисел.
Задание строки Строка состоит из натуральных чисел, разделенных пробелом. Определить цифры, не входящие ни в одно их этих чисел. ...

Напечатать в одну строку пятьдесят первых натуральных чисел разделенных запятой с пробелом
Напечатать в одну строку пятьдесят первых натуральных чисел разделенных запятой с пробелом.

Строка символов состоит из чисел, разделенных пробелами. Найти наибольшее и наименьшее число
Строка символов состоит из чисел, разделенных пробелами. Найти наибольшее и наименьшее число.

8
46 / 36 / 15
Регистрация: 05.02.2014
Сообщений: 140
17.02.2014, 13:46
вот плохо выглядящий код
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import java.util.ArrayList;
import java.util.Comparator;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
 
public class Lesson12 {
    public  static Integer[] getRange(String str) {
        Pattern p = Pattern.compile("\\d+-\\d+");
        Matcher m = p.matcher(str);
        ArrayList<Integer> temp = new ArrayList<>();
        while (m.find()) {
            String  [] tempIntArr =m.group().split("-");
            temp.add(Integer.valueOf(tempIntArr[0]));
            temp.add(Integer.valueOf(tempIntArr[1]));
        }
        return temp.toArray(new Integer[0]);
    }
 
    public static ArrayList<Integer> removeNumbers(String str) {
        Integer[] range = getRange(str);
        String[] tempStringArr = str.replaceAll("\\s\\d+-\\d+\\s*", " ").split(" ");
        ArrayList<Integer> result = new ArrayList<>();
        for (int i = 0; i < tempStringArr.length; i++) {
            if (!isNeededToDelete(range, tempStringArr[i])) {
                result.add(Integer.valueOf(tempStringArr[i]));
            }
        }
        result.sort(new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o1.compareTo(o2);
            }
        });
        return result;
    }
 
    public static boolean isNeededToDelete(Integer[] range, String number) {
        Integer num = Integer.valueOf(number);
        for (int i = 0; i <= range.length /2 + 1 ; i += 2) {
            if (num >= range[i] && num <= range[i + 1]) {
                return true;
            }
        }
        return false;
    }
 
    public static void main(String[] args) {
        String str = "15 9 13-19 2 5 3-6 1 3 7-10 77";
        System.out.println(removeNumbers(str));
 
    }
}
0
17.02.2014, 14:02

Не по теме:

Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import java.util.ArrayList;
import java.util.Collections;
 
public class RangeLesson {
 
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<Integer>();
        String str = "15 9 2 5 3-6 1 3 7-10";
        String[] arr = str.split(" ");
        for (String s : arr) {
            if (!s.contains("-")) {
                list.add(Integer.parseInt(s));
            }
        }
        Collections.sort(list);
        for (Integer i : list) {
            System.out.println(i);
        }
    }
}

я понял что прочитал не совсем внимательно, не удаляю числа из диапазонов...

0
46 / 36 / 15
Регистрация: 05.02.2014
Сообщений: 140
17.02.2014, 14:27
Вот еще одна версия, только для 1.8 версии.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
 
public class NumRemover {
    private class UtilityClass {
        ArrayList<Integer[]> rangeList = new ArrayList<>();
        ArrayList<Integer> numList = new ArrayList<>();
 
        private UtilityClass(String str) {
            calculateNumList(str);
            calculateRangeList(str);
            deleteNumbers();
            sortNumList();
        }
 
        private String getNumbersAsString() {
            String result = "";
            for (Integer i : numList) {
                result +=" " + i;
            }
            return result;
        }
 
        private void sortNumList() {
            numList.sort((o1, o2) -> o1.compareTo(o2));
        }
 
        private void deleteNumbers() {
            numList.removeIf(i -> isNeededToDelete(i));
        }
 
        private void calculateRangeList(String str) {
            Pattern p = Pattern.compile("\\d+-\\d+");
            Matcher m = p.matcher(str);
            while (m.find()) {
                String  [] tempIntArr =m.group().split("-");
                rangeList.add(new Integer[]{Integer.valueOf(tempIntArr[0]), Integer.valueOf(tempIntArr[1])});
            }
        }
        private void calculateNumList(String str) {
            String[] tempStringArr = str.replaceAll("\\s\\d+-\\d+\\s*", " ").split(" ");
            for (int i = 0; i < tempStringArr.length; i++) {
                numList.add(Integer.valueOf(tempStringArr[i]));
            }
        }
 
        private boolean isNeededToDelete(Integer number) {
            for (int i = 0; i < rangeList.size(); i++) {
                if (number >= rangeList.get(i)[0] && number <= rangeList.get(i)[1]) {
                    return true;
                }
            }
            return false;
        }
    }
 
    public  String getResult(String str) {
        UtilityClass uc = this.new UtilityClass(str);
        return uc.getNumbersAsString();
    }
 
    public static void main(String[] args) {
        String str = "15 9 2 5 3-6 1 3 7-10";
        System.out.println(new NumRemover().getResult(str));
    }
}
0
0 / 0 / 0
Регистрация: 11.10.2012
Сообщений: 34
19.02.2014, 10:23  [ТС]
sort подчеркнуто красным, подключал разные пакеты , не помогло, не может отсортировать ArrayList по возрастанию
Java
1
2
3
4
5
6
7
8
result.sort(new Comparator<Integer>() 
{
            @Override
            public int compare(Integer o1, Integer o2) 
            {
                return o1.compareTo(o2);
            }
});
0
 Аватар для KuKu
1563 / 1041 / 94
Регистрация: 17.04.2009
Сообщений: 2,995
19.02.2014, 10:53
Может потому что такого метода нет у ArrayList - это jdk 1.8, используй Collections.sort.
0
21.02.2014, 01:43
 Комментарий модератора 
nesteroff, KuKu, конкурс на самое красивое оформление поста вчера закончился.
0
0 / 0 / 0
Регистрация: 11.10.2012
Сообщений: 34
21.02.2014, 17:00  [ТС]
и Collections.sort. пробовал, не хочет
0
 Аватар для KuKu
1563 / 1041 / 94
Регистрация: 17.04.2009
Сообщений: 2,995
21.02.2014, 20:09
Цитата Сообщение от nesteroff Посмотреть сообщение
и Collections.sort. пробовал, не хочет
Как пробовал? - так?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.02.2014, 20:09
Помогаю со студенческими работами здесь

строка символов,которaя состоит из десятичных чисел и который отделены пробелом.вывести на экран четные числа
данa строка символов,которaя состоит из десятичных чисел и который отделены пробелом.вывести на экран четные числы Добавлено через 18...

Задан файл из целых чисел со знаком, разделенных пробелом. Произвести чтение этих чисел в обратном порядке, не читая предыдущие.
Есть множество задач анализа данных, записанных в файле, которые можно решить за &quot;линию&quot;, не обязательно, сохраняя данные в...

Дан массив чисел, разделенных пробелом
Дан массив чисел, разделенных пробелом. Вычеркнуть слова, начинающиеся с буквы С. Оставшийся массив упорядочить по алфавиту. Вывести на...

Занести строку чисел разделенных пробелом в массив.
Нужно прочесть файл в котором 2 строки и занести числа из второй строки в массив: в первой натуральное число N, не превышающее 1000 -...

Считывание из файла чисел, разделенных пробелом, в массив
В текстовом файле массив целых чисел записанных через пробел. Затем переход на новую строку и еще один массив через пробел. Пытаюсь считать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru