Идея, лежащая в основе вашего решения, верна, у вас просто есть небольшие синтаксические ошибки.
Когда вы делаете Integer.valueOf(string)
, вам нужно обработать исключение числового формата. Это просто способ Java сообщить вам, что он может надежно возвращать Integer для данной строки.
|
- операция побитового ИЛИ. Предположительно, вы хотите ||
, который сравнивает с использованием логической логики. Во-вторых, при сравнении строк вы хотите сравнивать по значению, а не по ссылке. ==
сравнивает по ссылке, тогда как someString.equals(someOtherString)
фактически проверяет содержимое строки. Вам действительно не нужно этого делать, потому что вы уже проанализировали это в целое число.
С этими исправлениями вы поймете, если ввод неправильный, и при необходимости отобразите предупреждение.
Итак, полное решение ...
public void deposit() {
String d = etDepositAmount.getText().toString();
Integer depositAmount = 0;
try
{
depositAmount = Integer.valueOf(d);
}
catch(NumberFormatException ex)
{
// Uh oh! Bad input!
}
if (depositAmount > playerCash || depositAmount <= 0)
{
new AlertDialog.Builder(this).setTitle("Wait")
.setMessage("Please enter a valid deposit value.")
.setPositiveButton("OK", null).show();
etDepositAmount.setText("");
} else {
int newBankBalance = playerBalance + depositAmount;
playerBalance = newBankBalance;
playerCash = (playerCash - depositAmount);
bankBalance.setText("Bank Balance: $" + playerBalance);
cash.setText("Cash in hand: $" + playerCash);
etDepositAmount.setText("");
Player stats = new Player(this);
stats.open();
stats.bankDeposit(playerId, playerCash, playerBalance);
stats.close();
}
}