解析EditText时的Android NumberFormatException

时间:2014-02-15 00:35:57

标签: java android numberformatexception

我正在编写一个应用程序,它从AddBook类中获取输入,允许它显示在List中,然后允许用户搜索他们的书。为此,我正在创建一个临时EditText,将其绑定到用户实际输入其搜索值的框,然后(在确保它不为空之后)我比较他们为ISBN输入的内容arrayList <Book>个自定义对象中每个条目的ISBN编号,该列表被命名为books。

问题是,当我尝试将EditText解析为Int时,它似乎无效。我首先尝试在toString()上使用EditText,然后在该方法的结果上使用Integer.parseInt(),但由于转换似乎不成功,所以没有成功;

所有资源都已到位且代码编译正确,因此这些不是问题。

  EditText myEdTx = (EditText) findViewById(R.id.bookName);

    if(myEdTx.getText().equals("")){Toast toast = Toast.makeText(this, "Please enter something for us to work with!", Toast.LENGTH_SHORT);
    toast.show();}
    else{
    //resume here
    for(int i=0; i<books.size(); i++)
    {
    Book tBook =  new Book(i, null, null);  tBook = books.get(i); String s=myEdTx.toString(); 
    int tInt = Integer.parseInt(s);`

5 个答案:

答案 0 :(得分:2)

要获取EditText内容的字符串表示形式,请使用:

String s = myEdTx.getText().toString();

直接在EditText上使用toString()可以得到如下内容:

android.widget.EditText{40d31450 VFED..CL ......I. 0,0-0,0}

......这显然不是你想要的。

答案 1 :(得分:0)

您假设用户在文本字段中输入了一个数字,但这是不安全的,因为您只获得一个字符串文本(理论上也可以包含非数字)。当我没记错的时候,你可以在android中调整一个文本字段,用户只能输入数字,这应该更适合你。

答案 2 :(得分:0)

Integer.parse()无法将String解析为整数时,会出现

NumberFormatException,因此最好处理此异常。

   String s = myEdTx.getText().toString();
    try {
         int tInt = Integer.parseInt(s);
     } catch( NumberFormatException ex ) {
       //do something if s is not a number, maybe defining a default value.
       int tInt = 0;
     }

答案 3 :(得分:0)

因此,您尝试解析的当前字符串是行中的空格 和整数类无法解析该空格。所以使用以下代码。

String s=myEdTx.getText().toString();     
int tInt = Integer.parseInt(s.trim());

答案 4 :(得分:0)

String s = myEdtx.getText().toString().trim();

int iInt = Integer.parseInt(s);