Java 将EditText值转换为int
我的程序将数字值设置为editText字段。我正在尝试将editText值转换为整数。我尝试的所有尝试均失败。以下是editText字段接收值的方式:Java 将EditText值转换为int,java,Java,我的程序将数字值设置为editText字段。我正在尝试将editText值转换为整数。我尝试的所有尝试均失败。以下是editText字段接收值的方式: public void onDataChange(DataSnapshot snapshot) { for (DataSnapshot postSnapshot : snapshot.getChildren()) { DogExpenditure dogEx
public void onDataChange(DataSnapshot snapshot) {
for (DataSnapshot postSnapshot : snapshot.getChildren()) {
DogExpenditure dogExpenditure = postSnapshot.getValue(DogExpenditure.class);
totalAmount[0] += dogExpenditure.getAmount();
textView3.setText(Integer.toString(totalAmount[0] ));
}
}
textView3.setTextInteger.toStringtotalAmount[0]我之所以这样做,是因为除了在该程序中之外,totalAmount[0]无法在任何其他地方访问,因此我决定从编辑文本中提取它。虽然我尚未成功,但对此不确定。我获取java.lang.NumberFormatException:无效int:错误:
以下是我如何尝试的:
String diff = String.valueOf(textView3.getText());
Integer x = Integer.valueOf(diff);
String saley = String.valueOf(textView5.getText());
Integer v = Integer.valueOf(saley);
注意:textView5和textView5都是EditText字段。启动时,EditText的值似乎是空字符串。 我认为最好检查空字符串,或者确保初始值不是空字符串
String diff = String.valueOf(textView3.getText());
Integer x = null;
if(!diff.trim().isEmpty())
x = Integer.valueOf(diff);
NumberFormatException告诉您字符串不是数字
这里,字符串为空,因此无法对其进行解析。解决方案是检查该特定值,如
但如果我输入foobar,这不会阻止异常。因此,更安全的解决方案是捕获异常。如果这不是一个数值,我让您找到正确的值管理解决方案
Integer number;
try{
number = Integer.valueOf(s);
} catch(NumberFormatException nfe){
number = null; //Just an example of default value
// If you don't manage it with a default value, you need to throw an exception to stop here.
}
...
一个可能对你有帮助的例子
boolean validInput = true;
String theString = String.valueOf(textView3.getText());
if (!theString.isEmpty()){ // if there is an input
for(int i = 0; i < theString.length(); i++){ // check for any non-digit
char c = theString.charAt(i);
if((c<48 || c>57)){ // if any non-digit found (ASCII chars values for [0-9] are [48-57]
validInput=false;
}
}
}
else {validInput=false;}
if (validInput){// if the input consists of integers only and it's not empty
int x = Integer.parseInt(theString); // it's safe, take the input
// do some work
}
好的,我找到了一个更好的方法来处理这个问题。启动时,值为null。因此,我创建了另一个方法,在活动初始化后,通过单击按钮来处理edittext字段。它可以工作
private void diffe() {
String theString = String.valueOf(textView3.getText().toString().trim());
String theStringe = String.valueOf(textView5.getText().toString().trim());
int e = Integer.valueOf(theString);
int s = Integer.valueOf(theStringe);
int p = s - e ;
textView2.setText(Integer.toString(p));
}
只是一个提示,EditText->String->int。现在,您需要知道什么字符串实际代表一个数字,正如异常告诉您的那样。不等同于0我想说的是,为了节省空间,可以只声明x而不将其实例化为null,而是添加一个将x设置为null的else条件至少使用String.equals进行正确的比较。但是String.isEmpty可以。最好是String.trim.i空的。这只是一个例子,x的最佳声明位置取决于代码的其余部分,可能在if体或其他条件之外不需要。如果您自己将字符串设置为整数,则可能不需要捕获异常(如果用户可以对其进行编辑),实际上这将是最好的。请注意,对于我们的本地应用程序来说,这项工作应该更为通用。您可以简单地使用forchar c:theString.toCharArray{…};没错,这就是我提到ASCII的原因。真的!我没注意到