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

Управление массивом!

06.09.2014, 23:03. Показов 637. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
И снова здравствуйте, господа!

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

Мы немного поговорили с одним форумчанином, но, к сожалению, так и не пришли к решению(

Изначально задача была такова:

Имеется массив String[]. Заполняем его вводом с клавиатуры. Как только мы добавили какой-то новый элемент в массив, начался отсчет для этого элемента и через 2 секунды выведется('элемент удален'). Если! мы успеем за эти две секунды ввести опять этот же элемент, то строка - ('элемент удален') выведется уже через 4 секунды и далее по экспоненте..)

В общем, для лучшего понимания приведу вывод программы:

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
1
прошло 2 секунды
элемент удален
2
2
прошло 4 секунды
элемент удален
1
1
прошло 4 секунды
элемент удален
3
3
2
2
прошло 4 секунды
элемент удален
прошло 4 секунды
элемент удален
Видно, что мы ввели 1, но ввести еще раз 1 не успели( Посему 1 удалился через 1 секунду.Далее мы видим что ввели два раза подряд двойку она удалилась уже через 4 секунды. Видим как мы паралельно вводим несколько цифр они удалились через 4 секунды.


Пожалуйста, помогите реализовать такой мистический функционал!

Взываю к вашей мудрости!)

Могу скинуть небольшие наработки, ввод и т д, если найду нашу старую тему) А то она куда то улетела на бездонные страницы...

(Почему в прошлый раз был выбран String[]? Во первых, я его позже переведу в String[][], во вторых, вторая часть массива, так скажем, будет описывать первую..)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.09.2014, 23:03
Ответы с готовыми решениями:

Управление двухмерным массивом из функции
Доброго времени суток, пожалуйста, подскажите, как правильно передать в функцию указатель на двухмерный массив, а затем из функции изменять...

Массив в базе данных, управление массивом
Доброго времени суток обитатели портала cyberforum.ru Хотел для своего сайта сделать достижения. Для этого решил создать базу данных....

Реализовать алгоритм работы планировщика. Управление виртуальной памятью. Управление файловой системой
Разработка программы менеджера памяти. Свопинг. Сегментная схема организации памяти. Управление виртуальной памятью. Глобальное и локальное...

8
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
07.09.2014, 00:45
Опишите алгоритм по которому вы хотели решить эту задачу. После этого кто-нибудь предложит усовершенствовать существующий или предложит свой вариант алгоритма. Задача не выглядит такой уж трудной
0
11 / 11 / 0
Регистрация: 19.02.2014
Сообщений: 95
07.09.2014, 02:09  [ТС]
Я думаю примерно так:

Собс-но, в маине посылаем вводимую строку и i переменную в метод, далее смотрим если такого элемента нет, то вызываем метод с начальными параметрами ( 2 секунды), если есть, то с увеличиными, проблема именно в реализации вот этого вызова метода и увеличения..
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
07.09.2014, 10:05
Nachinka, это не алгоритм. Другими словами вы написали
"ну мы напишем программу чтобы она работала, но незнаю как мы её напишем"


Начать можно с того, чтобы подумать над структурой, в которой вы хотите хранить ваши данные. Думаю обычный массив строк тут будет нелучшим решением. Скорее всего нужно что-то вроде Map<String, MetaData> где String - ваша строка, а Metadata - определенный вами класс, который будет хранить состояние таймера этой строки, ассоциированный с ней поток и, возможно ещё другие данные. Дальше вы должны разработать методы класса, которые будут использовать этот Map. Можно хотя бы просто по названием. Главное чтобы функционал был разбит на логические блоки.
0
11 / 11 / 0
Регистрация: 19.02.2014
Сообщений: 95
07.09.2014, 15:56  [ТС]
Примерно представляю так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class prog1{
 public static void main(String[] args){
   // Добавляем тут сканер и передаем строку дальше в метод addStr(String str)
 }
 
 // Добавляем здесь строку и дополнительные параметры
 void addStr(String str){
 
 }
 
 //Тут метод отсчитывания времени, я пока продумал передвать туда переменную...(2. 4. 8. 16...)
 void times(int tm){
 
 }
 
}
Примерно такой псевдо-код
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
07.09.2014, 16:44
Nachinka, посмотрите на мой предыдущий пост. Просто строк недостаточно
1
11 / 11 / 0
Регистрация: 19.02.2014
Сообщений: 95
07.09.2014, 18:57  [ТС]
KEKCoGEN, просто я решил использовать только String[] я понимаю что он не удобен.Но нужен именно он!

Добавлено через 6 минут
Вот этот код, почти полностью решает свою задачу:
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
import java.util.HashMap;
import java.util.Scanner;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
 
public class Neuro extends HashMap<Object, Object> {
    private static final long serialVersionUID = 1L;
    private ExecutorService es = Executors.newCachedThreadPool();
 
    public void add(Object elem) {
        FutureDeleter newfd = new FutureDeleter(elem);
        if (containsKey(elem)) {
            FutureDeleter f = (FutureDeleter) get(elem);
            f.cancel();
            newfd.delay = f.delay * 2;
        }
        es.submit(newfd);
        put(elem, newfd);
    }
 
    class FutureDeleter implements Runnable {
        int delay = 2;
        volatile boolean cancel;
        Object elem;
 
        public FutureDeleter(Object elem) {
            this.elem = elem;
        }
 
        public void cancel() {
            cancel = true;
        }
 
        @Override
        public void run() {
            try {
                Thread.sleep(delay * 1000);
                if (!cancel) {
                    remove(elem);
                    System.out.println(" " + elem + " deleted after " + delay + " seconds");
                }
            } catch (Exception e) {
            }
        }
    }
 
    public static void main(String... args) {
        Scanner scan = new Scanner(System.in);
        Neuro shm = new Neuro();
        while (true) {
            String nxt = scan.next();
            shm.add(nxt);
            System.out.print("              ");
            for (Object o : shm.keySet()) {
                System.out.print(o + "(delay="
                        + ((FutureDeleter) shm.get(o)).delay + ")  ");
            }
            System.out.println();
        }
    }
}
Только тут нужно заменить HashMap, на String[][]
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
07.09.2014, 19:36
Nachinka, у вас задание такое не использовать коллекции? и вообще ничего или вы сами себе такое придумали?
1
11 / 11 / 0
Регистрация: 19.02.2014
Сообщений: 95
08.09.2014, 16:23  [ТС]
Задание такое))

Добавлено через 2 часа 28 минут
Но вообще можно как-то сделать так, оставить саму мапку,а ключом или значением сделать в нем String[] )) Пытался что то вот тут заменить, но пока никак)

Добавлено через 17 часов 22 минуты
Пытаюсь все еще сделать, что то никак(

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
68
69
70
import java.util.HashMap;
import java.util.HashSet;
import java.util.Scanner;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
 
public class Neuro {
    private ExecutorService es = Executors.newCachedThreadPool();
    public HashMap<String[], Object> strhash = new HashMap<String[], Object>();
    public HashSet<String[]> mapsval = new HashSet<String[]>();
 
    public void add(Object elem) {
        String[] elems = new String[4];
        elems[0] = "1";
        elems[1] = (String) elem;
        elems[2] = "1";
        elems[3] = "1";
        mapsval.add(elems);
 
        FutureDeleter newfd = new FutureDeleter(elems);
        for (String[] s : mapsval) {
            for (String[] stc : strhash.keySet()) {
                if (stc[1].equals(s[1])) {
                    System.out.println("1");
                    FutureDeleter f = (FutureDeleter) strhash.get(elems);
                    f.cancel();
                    newfd.delay = f.delay * 2;
                }
            }
        }
        es.submit(newfd);
        strhash.put(elems, newfd);
    }
 
    class FutureDeleter implements Runnable {
        int delay = 2;
        volatile boolean cancel;
        Object elem;
 
        public FutureDeleter(Object elems) {
            this.elem = elems;
        }
 
        public void cancel() {
            cancel = true;
        }
 
        @Override
        public void run() {
            try {
                Thread.sleep(delay * 1000);
                if (!cancel) {
                    strhash.remove(elem);
                    System.out.println(" " + elem + " deleted after " + delay
                            + " seconds");
                }
            } catch (Exception e) {
            }
        }
    }
 
    public static void main(String... args) {
        Scanner scan = new Scanner(System.in);
        Neuro shm = new Neuro();
        while (true) {
            String nxt = scan.next();
            shm.add(String.valueOf(nxt)); 
        }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.09.2014, 16:23
Помогаю со студенческими работами здесь

Движение, вращение, управление движением, управление вращением фигуры
Написать программу, выполняющую четыре операции над графическим объектом(&quot;фигурой&quot;):движение,вращение,управление движением,управление...

Перенести управление стрелками на управление WASD
Мне нужно чтобы в игре вместо стрелок управление осуществлялось WASD и при этом сами WASD не нажимались в игре. Для блокировки нажатия...

Массивом и динамическим массивом
Составить программу, в которой 1) организовать ввод матрицы размера mxn из целых чисел; 2) вычислить сумму ненулевых элементов, кратных...

Чем отличается 1с 8.0 Управление персоналом от 1с 8.1 Управление персоналом?
Чем отличается 1с 8.0 Управление персоналом от 1с 8.1 Управление персоналом? Где это посмотреть)

Массивом
помогите плиз.. чет проблемы с массивом у меня) Задать два массива вещественных чисел с помощью датчика случайных чисел. Для каждого...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru