将EditText值转换为int

时间:2017-04-20 11:03:15

标签: java

我的程序为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字段..

4 个答案:

答案 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));
    }