我正在尝试检查文本区域是否只有数字,但是我遇到了这个问题数字格式异常,点击编辑按钮,任何想法如何解决它。
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 :(得分: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。
答案 1 :(得分:0)
我会使用String.matches()
作为您的支票,而不是自己动手。废弃for-loop并将if-condtion从isnotDigit==false
更改为text.matches("[0-9]+")
。在此之后Integer.parseInt(text)
应该确定有效。
这使用正则表达式来检查您的字符串是否仅包含数字和至少一个数字。有关正则表达式的进一步参考,请参阅javadoc for Pattern
。