我的程序为editText字段设置一个数值..我正在尝试将edittext值转换为整数..我在尝试过的所有尝试中都失败了。这就是editText字段接收值的方式:
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.setText(Integer.toString(totalAmount [0] )我这样做是因为 totalAmount [0] 无法在该程序内部以外的任何地方访问,因此我决定从editText中取出它(不确定这个)虽然我没有成功。我得到 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字段..
答案 0 :(得分:1)
A NumberFormatException
告诉您字符串不是数字。
这里,String是空的,因此无法进行解析。解决方案是检查特定值,例如Jesse Hoobergs answer。
但如果我输入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.
}
...
答案 1 :(得分:0)
在启动时,editText的值似乎是一个空字符串(“”)。 我认为你最好检查空字符串或确保初始值不是空字符串。
String diff = String.valueOf(textView3.getText());
Integer x = null;
if(!diff.trim().isEmpty())
x = Integer.valueOf(diff);
答案 2 :(得分:0)
一个可以帮助你的例子
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
}
答案 3 :(得分:0)
好的,我发现了一个更好的方法来处理这个..在启动时,值为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));
}