Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
trojan1297
1 / 1 / 0
Регистрация: 09.09.2014
Сообщений: 18
#1

If срабатывает не на 0 а на -1 - Android

22.01.2015, 23:42. Просмотров 386. Ответов 11
Метки нет (Все метки)

Здравствуйте. Сразу извиняюсь за возможно глупый вопрос, и возможно даже что не по андройд а по java в общем.

Проблема в следующем:
If срабатывает не на 0 а на -1

C#
1
2
3
4
5
6
7
8
9
10
11
12
int countWins = 0;
if(isWin == true) {
            countWins++;
        } else {
            if (countWins == 0) {
                countWins = 0;
                gameOver();
 
            }
            countWins--;
        }
        count.setText("" + countWins);
если же вместо countWins == 0 поставить countWins == 1, то условие в этом блоке всё равно выполняются если countWins = -1;

Надеюсь что вопрос сформулировал понятно)
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kemaweyan
2 / 2 / 1
Регистрация: 16.12.2014
Сообщений: 5
23.01.2015, 00:38     If срабатывает не на 0 а на -1 #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Всё правильно. При срабатывании условия (хоть 0, хоть 1, хоть любое другое число), выполняется

Java
1
countWins = 0;
А затем в любом случае выполняется

Java
1
countWins--;
и поэтому в конце count.setText показывает -1. Если нужно, чтоб count.setText показывал значение countWins, на котором сработало условие, то следует переписать фрагмент так:

Java
1
2
3
4
5
6
7
8
9
10
11
int countWins = 0;
if(isWin == true) {
    countWins++;
} else {
    if (countWins == 0) {
        gameOver();
    } else {
        countWins--;
    }
}
count.setText("" + countWins);
trojan1297
1 / 1 / 0
Регистрация: 09.09.2014
Сообщений: 18
23.01.2015, 01:16  [ТС]     If срабатывает не на 0 а на -1 #3
Благодарю за подробное пояснение.
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
23.01.2015, 10:07     If срабатывает не на 0 а на -1 #4
Можно переписать ещё вот так:
Java
1
2
3
4
5
6
7
8
int countWins = 0;
if (isWin)
    countWins++;
else if (countWins == 0)
    gameOver();
else
    countWins--;
count.setText(String.valueOf(countWins));
Кстати, а почему при проигрыше количество побед уменьшается?
androbro
319 / 279 / 55
Регистрация: 17.10.2014
Сообщений: 827
23.01.2015, 10:10     If срабатывает не на 0 а на -1 #5
CoolMind, + за феншуй
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
23.01.2015, 12:25     If срабатывает не на 0 а на -1 #6
androbro, ой, спасибо!
YuraAAA
1564 / 1306 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
23.01.2015, 13:14     If срабатывает не на 0 а на -1 #7
Охинея какая-то, простите)
условие countWins == 0 будет всегда true, видимо что это локальная переменная.
Значит, будет так?
Java
1
2
3
int countWins = 0;
if (isWin) countWins++;
else gameOver();
androbro
319 / 279 / 55
Регистрация: 17.10.2014
Сообщений: 827
23.01.2015, 14:25     If срабатывает не на 0 а на -1 #8
CoolMind, тут надо проявить немного фантазии при переводе
Цитата Сообщение от trojan1297 Посмотреть сообщение
countWins
ИМХО с одной стороны это кажется количество побед, а с другой стороны это и количество оставшихся жизней(попыток)))
изначально их правда 0...хардкорная игрушка назревает)))
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
23.01.2015, 15:30     If срабатывает не на 0 а на -1 #9
YuraAAA, androbro, да, вы правы, стёбное условие. Может, автор и правда пытался посчитать количество жизней?
trojan1297
1 / 1 / 0
Регистрация: 09.09.2014
Сообщений: 18
25.01.2015, 01:44  [ТС]     If срабатывает не на 0 а на -1 #10
Да игрушку хардкорную планирую, извиняюсь за мой английский))), countWins это количество выигранных раундов, при выигрыше +1 при проигрыше раунда -1. При 0 конец игры.
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
25.01.2015, 20:36     If срабатывает не на 0 а на -1 #11
trojan1297, рад, что вы зашли на огонёк.
И всё же, зачем у вас при проверках сразу происходит инициализация countWins = 0? Это было бы нормально в начале программы, но если в середине, то далее требуется цикл, а не просто ветвление.
И мы намекнули, что это, всё же, не количество побед, а разность между количеством побед и поражений.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.01.2015, 21:02     If срабатывает не на 0 а на -1
Еще ссылки по теме:

Android Перегрузка функций не срабатывает
Не срабатывает очистка БД Android
Android OnClickListener не срабатывает пояления imageView
Не срабатывает код после цикла Android

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

Или воспользуйтесь поиском по форуму:
trojan1297
1 / 1 / 0
Регистрация: 09.09.2014
Сообщений: 18
25.01.2015, 21:02  [ТС]     If срабатывает не на 0 а на -1 #12
CoolMind, Инициализация происходит в начале программы, сюда запихнул просто для наглядности.
Yandex
Объявления
25.01.2015, 21:02     If срабатывает не на 0 а на -1
Ответ Создать тему
Опции темы

Текущее время: 09:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru