Как предотвратить отрицательный счет / отрицательные числа - PullRequest
0 голосов
/ 09 июня 2018

У меня есть приложение, в котором есть текстовое представление, которое показывает монеты 00, и кнопка, показывающая рекламные видеорекламы, чтобы дать 10 монет пользователю, и кнопка покупки, чтобы уменьшить монеты на 30. Теперь, когда у пользователя есть 30 монет,при нажатии на кнопку покупки он устанавливает текстовые монеты в 00, но когда у него меньше 30 монет, он устанавливает отрицательный текст (скажем, у меня есть 20 монет, а когда я нажимаю купить, он устанавливает текст в -10).

что я хочу

Я хочу показать тост, когда пользователь нажимает кнопку покупки, когда его монеты равны 0, и я не хочу, чтобы значение стало отрицательным.

Мой код

 mText = (TextView) findViewById(R.id.money);
    coinCount = 0;
    mText.setText(" " + coinCount);
    Button button = (Button) findViewById(R.id.buynow);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (coinCount <= 0) {
                Toast.makeText(MainActivity.this, "You dont have enough coins", Toast.LENGTH_SHORT).show();
            } else {
                    coinCount = coinCount - 30;
                    mText.setText(String.valueOf(coinCount));
                }

        }
    });

Ответы [ 2 ]

0 голосов
/ 09 июня 2018

Просто измените условие с:

if (coinCount <= 0)

на

if (coinCount < 30)

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


Я также хотел бы предложить вам хранить количество монет для вычитания в переменной.Таким образом, когда однажды вы решите изменить количество монет для вычитания, вы можете сделать это только в одном месте, а не во всем коде, который использует это значение.Например:

mText = (TextView) findViewById(R.id.money);
int costOfTransactionInCoins = 30; // new variable
coinCount = 0;
...
if (coinCount < costOfTransactionInCoins) {
   ... }
else {
    coinCount = coinCount - costOfTransactionInCoins;
...
}
... 
0 голосов
/ 09 июня 2018

Измените

if (coinCount <= 0)

на следующее:

if (coinCount <= 29)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...