簡體   English   中英

解析EditText時的Android NumberFormatException

[英]Android NumberFormatException when parsing EditText

我正在編寫一個應用程序,它接收來自AddBook類的輸入,允許它顯示在List ,然后允許用戶搜索他們的書。 為此,我正在創建一個臨時的EditText ,將其綁定到用戶實際輸入其搜索值的框,然后(在確保它不為空之后)我將他們輸入的ISBN號與ISBN進行比較<Book>自定義對象的arrayList中每個條目的arrayList ,該列表被命名為books。

問題是,當我嘗試將EditText解析為Int ,它似乎不起作用。 我首先嘗試在EditText上使用toString() ,然后對該方法的結果使用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);`

要獲取EditText內容的字符串表示形式,請使用:

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

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

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

......這顯然不是你想要的。

您假設用戶在文本字段中輸入一個數字,但這是不安全的,因為您只獲得一個字符串文本(理論上也可以包含非數字)。 當我沒記錯的話,你可以在android中調整一個文本字段,用戶只能輸入數字,這應該更適合你。

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;
     }

因此,您嘗試解析的當前String是行中的空格,而整數類無法解析該空格。 所以使用以下代碼。

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

int iInt = Integer.parseInt(s);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM