2014-02-20 30 views
0

我試圖檢查文本區域是否只有數字或不是,但我得到這個問題數字格式異常,同時點擊編輯按鈕,任何想法如何解決它。避免數字格式異常,而解析爲整數

ArrayList<CarRental> List= CarRent.getList(); 

String text=EditTF.getText().trim(); 

char [] txt=text.toCharArray(); 

Character a=null; 

    boolean isnotDigit=false; 

int index; 

    for(int i=0;i<txt.length;i++) 
    { 
     if(!a.isDigit(txt[i])) 
     { 
      isnotDigit=true; 
      break; 
     } 
     else 
     { 
      isnotDigit=false; 
      continue; 
     } 
    } 

    if(isnotDigit==false) 
    { 
     index=Integer.parseInt(text.trim()); 
     PrintList_Summary.setIndex(index); 
     EditDetails.nameTF.setText(List.get(index).getName()); 
     EditDetails.sizeCOB.setSelectedItem(List.get(index).getSize());   
     EditDetails.daysTF.setText(List.get(index).getDays()+""); 

     if(List.get(index).getCarType().equalsIgnoreCase("Luxury")) 
     { 
      EditDetails.LuxRB.setSelected(true); 
     } 
     else if(List.get(index).CarType().equalsIgnoreCase("Truck")) 
     { 
      EditDetails.truckRB.setSelected(true); 
     } 

     if(List.get(index).getDriver()) 
     { 
      EditDetails.yesRB.setSelected(true); 
     } 
     else 
     { 
      EditDetails.noRB.setSelected(true); 
     } 

     EditDetails.Frame.setVisible(true); 
    } 
    else 
    { 
     JOptionPane warning=new JOptionPane(); 
     warning.showMessageDialog(null,"Element Index CAN ONLY be an INTEGER.","Invalid Index",WIDTH); 
    } 
+0

歡迎來到Stackoverflow。請爲該語言添加標籤,我假設它是Java。 – Dirk

回答

0

使用try catch來處理異常。

try{ 
    index = Integer.parseInt(text.trim()); 
    //etc 
}catch(NumberFormatException ex){ 
    //whatever happens when the exception is thrown (not an integer) 
} 

您可以使用它代替if(!a.isDigit(txt [i]))。如果它不能被解析,那麼它將會介紹該捕獲。

此外,您可以使用!isnotDigit而不是isnotDigit == false。

0

我會用String.matches()作爲你的支票而不是自己做。廢棄for循環並將您的條件從isnotDigit==false更改爲text.matches("[0-9]+")。此後Integer.parseInt(text)應該明確工作。

這使用正則表達式來檢查您的字符串是否只包含數字和至少一個數字。有關正則表達式的進一步參考,請參閱javadoc for Pattern

+0

我使用了text.matches()它是免費的數字格式異常,但它工作每次第一次我點擊按鈕,然後任何第二,第三,第四,等嘗試,他們發射esle statment而不是(如果說明)即使輸入是一個整數。 – user2228943

+0

使用調試器來查看該值的來源和來源。 –