gpt4 book ai didi

java - EditText 为空时出错(无法将 ' ' 解析为整数)

转载 作者:行者123 更新时间:2023-12-02 07:53:38 25 4
gpt4 key购买 nike

我有一个按钮和一个编辑文本。用户输入一个数字,然后单击按钮。然后这个数字就会发生一些事情。

但是,当编辑文本为空白时,我收到错误。我该如何解决?下面的代码是我的尝试..但它不起作用,因为我收到以下错误并且我的应用程序关闭:

E/AndroidRuntime(324): java.lang.NumberFormatException: 无法将 '' 解析为整数

public void onClick(View arg0) {
// TODO Auto-generated method stub
switch (arg0.getId()) {
case R.id.bBankDeposit:
deposit();
break;
case R.id.bBankWithdraw:
withdraw();
break;
}
}

public void deposit() {
String d = etDepositAmount.getText().toString();
Integer depositAmount = Integer.valueOf(d);

if (depositAmount > playerCash | depositAmount <= 0
| etDepositAmount.getText().toString() == "") {
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();
}
}

}

最佳答案

您的解决方案背后的想法是正确的,只是有一些轻微的语法错误。

当您执行Integer.valueOf(string)时,您需要处理数字格式异常。这只是 Java 让您知道它可以可靠地返回给定字符串的整数的方式。

| 是按位或运算。大概您需要 ||,它使用 boolean 逻辑进行比较。其次,在比较字符串时,您希望按值进行比较,而不是按引用进行比较。 == 通过引用进行比较,而 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();
}
}

关于java - EditText 为空时出错(无法将 ' ' 解析为整数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9917486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com