[英]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.