Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 15.11.2014
Сообщений: 55

Непонятно как работает switch

20.11.2019, 16:26. Показов 1714. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть вост такая конструкция
Java
1
2
3
4
5
6
7
8
9
10
           switch (rand) {
                case 0:
                    if (maps.getValue() && maps.getKey().equals("текст")) {
                        .....
                    } else 
                           if (rand==0 && !maps.getValue() && maps.getKey().equals("текст")){
                     rand+=1;
                    }
 
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.11.2019, 16:26
Ответы с готовыми решениями:

Непонятно, как работает push_back
Задали на неделю сделать программы, где нужно использовать std::vector. Сами алгоритмы для них я продумала (для второй программы он точно...

програ работает непонятно как
#include <iostream> #include <cctype> using namespace std; int main() { short int count=0; char ch('Y'); while (ch != 'q'...

Передача self в функцию, как-то непонятно работает.
Есть примерно такая конструкция: function some() { var self = this; self.boolVar = true; ... $( 'body' ).on( 'click',...

14
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
20.11.2019, 16:28
кулсторибро
0
0 / 0 / 0
Регистрация: 15.11.2014
Сообщений: 55
20.11.2019, 16:44  [ТС]
щас опишу)))

Добавлено через 9 минут
щас опишу)))
Не могу понять почему case 4 не выполняется? Если 1,2,3 case не выполнится, то есть значении в мэпе не соответствует условию, то должен выполниться case 4. хотя value == true и key == текст4.
Java
1
if (!maps.getValue() && maps.getKey().equals("текст"))
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
       for (Map.Entry<String, Boolean> maps : mMap.entrySet()) {
            switch (rand) {
                case 0:
                    if (maps.getValue() && maps.getKey().equals("текст")) {
                        System.out.println("Вывод");
                    } else if (!maps.getValue() && maps.getKey().equals("текст")) {
                        rand += 1;
                    }
                    break;
 
              // case 1, case 2,case 3;
 
                case 4:
                    if (maps.getValue() && maps.getKey().equals("текст4")) {
                        System.out.println("Вывод4");
                    } else if (!maps.getValue() && maps.getKey().equals("текст4")) {
                        rand += 1;
                    }
            }
0
 Аватар для sdasdaw
406 / 278 / 93
Регистрация: 14.03.2017
Сообщений: 777
20.11.2019, 16:47
Муслим, не так
Цитата Сообщение от Муслим Посмотреть сообщение
то есть значении в мэпе не соответствует условию,
Здесь главное, что будет в rand. Если будет 4, то выполнится 4й кейс, иначе оно никогда не будет выполняться.
0
0 / 0 / 0
Регистрация: 15.11.2014
Сообщений: 55
20.11.2019, 17:09  [ТС]
Цитата Сообщение от sdasdaw Посмотреть сообщение
Здесь главное, что будет в rand. Если будет 4, то выполнится 4й кейс, иначе оно никогда не будет выполняться.
Немного ошибся, 0,1,2 выполнятся (3 кэйса), на 4ый не прыгает. Если проверить с case 4: по case 7: , то 4,5,6 выполнится а на 7 не прыгнет.
Проверяю что в rand
Java
1
2
3
4
else if (!maps.getValue() && maps.getKey().equals("текст2")) {
                        rand += 1;
                        Log.d("mTag", String.valueOf(rand)); // получаю значение 3. 
                    }
Переставлял, проверял усвловие if (rand == 2 && maps.getValue() && maps.getKey().equals("текст3")) , чтобы проверить значении мэпа
0
 Аватар для sdasdaw
406 / 278 / 93
Регистрация: 14.03.2017
Сообщений: 777
20.11.2019, 17:13
Муслим, как вы генерируете rand?
0
0 / 0 / 0
Регистрация: 15.11.2014
Сообщений: 55
20.11.2019, 17:15  [ТС]
Цитата Сообщение от sdasdaw Посмотреть сообщение
как вы генерируете rand?
Пока никак. Для теста rand = 0;
0
 Аватар для sdasdaw
406 / 278 / 93
Регистрация: 14.03.2017
Сообщений: 777
20.11.2019, 17:24
Муслим, так если вы укажите rand - 4, оно перейдет на 4 кейс, разве нет?
или ошибка у вас не в этом?

Добавлено через 2 минуты
Муслим, https://ideone.com/6X2KMK
0
0 / 0 / 0
Регистрация: 15.11.2014
Сообщений: 55
20.11.2019, 17:36  [ТС]
Цитата Сообщение от sdasdaw Посмотреть сообщение
так если вы укажите rand - 4, оно перейдет на 4 кейс, разве нет?
или ошибка у вас не в этом?
Если просто указать 4, то выполнится. Но вот если указываю 0 , он сначала должен проверить условие мэпа,
если maps.getValue() && maps.getKey().equals("текст1") на этом останавливаем, иначе делаем rand+=1 , чтобы проверить case 1: и так до конца перепрыгиваем, пока не находим map`a с true условием.

Добавлено через 2 минуты
Проблема в том, что 3 кэйса проверяет, а на 4м останавливается.
0
 Аватар для sdasdaw
406 / 278 / 93
Регистрация: 14.03.2017
Сообщений: 777
20.11.2019, 17:43
Муслим, у вас тогда странное применение switch'а...

У вас не выполниться такая логика, если вы поставили break в конце case'а
Иначе, покажите полностью switch
1
0 / 0 / 0
Регистрация: 15.11.2014
Сообщений: 55
20.11.2019, 17:52  [ТС]
Это задача с уведомлениями в андроиде. Есть задача вывести множество уведомлений по порядку(1 уведомление за раз). То есть при создании уведомлений , сначала проверяем есть ли в Мэпе уведомление с такие ключом и значение true, если есть выводим , если нет - проверяем последующее ..
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
        for (Map.Entry<String, Boolean> maps : mMap.entrySet()) {
            switch (rand) {
                case 0:
                    if (rand == 0 && maps.getValue() && maps.getKey().equals("Уведомление1")) {
                        NotificationCompat.Builder builder =
                                new NotificationCompat.Builder(mContext, CHANNEL_ID)
                                        .setContentTitle("Title")
                                        .setContentText("Text")
                                        .setPriority(Notification.PRIORITY_HIGH)
                                        .setSound(listUriSounds(0));
                        Notification notification = builder.build();
                        mNotificationManager.notify(0, notification);
                    } else 
                        if (rand==0 && !maps.getValue() && maps.getKey().equals("Уведомление1")){
                        rand+=1;
                    }
                    break;
                case 1:
                    if (maps.getValue() && maps.getKey().equals("Уведомление2")) {
 
                        NotificationCompat.Builder builder =
                                new NotificationCompat.Builder(mContext, CHANNEL_ID)
                         .....
                        Notification notification = builder.build();
                        mNotificationManager.notify(1, notification);
                    } else 
                        if (!maps.getValue() && maps.getKey().equals("Уведомление2")){
                        rand+=1;
                    }
                    break;
                case 2:
                    if (maps.getValue() && maps.getKey().equals("Уведомление3")) {
                        NotificationCompat.Builder builder =
                                new NotificationCompat.Builder(mContext, CHANNEL_ID)
                    .......
                        Notification notification = builder.build();
                        mNotificationManager.notify(2, notification);
                    } else 
                        if (!maps.getValue() && maps.getKey().equals("Уведомление3")){
                        rand +=1;
                        Log.d("mTag", String.valueOf(rand));
                    }
                    break;
                case 3:
                    Log.d("ast", String.valueOf(rand));
                    if (maps.getValue() && maps.getKey().equals("Уведомление4")) {
                        NotificationCompat.Builder builder =
                                new NotificationCompat.Builder(mContext, CHANNEL_ID)
                       .......
                        Notification notification = builder.build();
                        mNotificationManager.notify(3, notification);
                    }else 
                        if (rand==3 && !maps.getValue() && maps.getKey().equals("Уведомление4")){
                        rand+=1;
                        Log.d("mTag", String.valueOf(rand));
                    }
                    break;
                case 4:
                    if (maps.getValue() && maps.getKey().equals("Уведомление5")) {
                        NotificationCompat.Builder builder =
                                new NotificationCompat.Builder(mContext, CHANNEL_ID)
                    .......
                        Notification notification = builder.build();
                        mNotificationManager.notify(4, notification);
                    }else 
                        if (!maps.getValue() && maps.getKey().equals("Уведомление5")){
                        rand+=1;
                    }
            }
        }
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
20.11.2019, 17:55
а если будет 100 уведомлений ты будешь для каждого свой кэйс писать с одним и тем же кодом?
1
0 / 0 / 0
Регистрация: 15.11.2014
Сообщений: 55
20.11.2019, 17:58  [ТС]
Цитата Сообщение от xoraxax Посмотреть сообщение
а если будет 100 уведомлений ты будешь для каждого свой кэйс писать с одним и тем же кодом?
Хотел, но после вашего ответа задумал сделать по другому . Постараюсь просто заменять значении полей.
Если задумаю сделать больше 10 уведомлений
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
20.11.2019, 18:39
Лучший ответ Сообщение было отмечено Муслим как решение

Решение

ну ты просто нормально код напиши и сразу все проблемы со свитчами исчезнут
2
0 / 0 / 0
Регистрация: 15.11.2014
Сообщений: 55
20.11.2019, 19:38  [ТС]
Цитата Сообщение от xoraxax Посмотреть сообщение
ну ты просто нормально код напиши и сразу все проблемы со свитчами исчезнут
Надо же, как все просто оказалось))

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 for (Map.Entry<String, Boolean> maps : mMap.entrySet()) {
 
            if (maps.getValue() && maps.getKey().equals(notifyName[rand])) {
                NotificationCompat.Builder builder =
                        new NotificationCompat.Builder(mContext, CHANNEL_ID)
                                .setContentTitle(notifyName[rand])
                                .setContentText(notifyName[rand])
                                .setSmallIcon(R.drawable.ic_launcher)
                                .setPriority(Notification.PRIORITY_HIGH).setSound(listUriSounds(rand));
                Notification notification = builder.build();
                mNotificationManager.notify(rand, notification);
 
            } else
                if (!maps.getValue() && maps.getKey().equals(notifyName[rand])){
                    createNotification();
                }
        }
Спасибо всем!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.11.2019, 19:38
Помогаю со студенческими работами здесь

Непонятно как работает таймер в ШИМ режиме
Здравствуйте! Может кто-нибудь поможет разобраться. Мне нужно менять частоту ШИМ по ходу работы. Для этого меняем период и предделитель...

Непонятно как работает простейшая схема в Simulink
Всем привет! Изучаю Matlab &amp; Simulink. Вопросы: 1) по завершении симуляции издается звук, который обычно в виндоус обозначает ошибку....

Как работает switch() ?
Добрый день! Объясните, пожалуйста, механику работы switch() в C#, вопрос такой, есть: switch(param.Value){ case...

Как работает switch
Имеется код #include &lt;stdio.h&gt; int main(void) { int input; printf (&quot;Введите число:\n&quot;); printf (&quot;1)...

Как работает Switch??
Всем привет! Прошу не счесть меня за идиота, но ситуация реально плохая. Уже 3-ю неделю хожу и объясняю преподу как работает Switch и его...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru