你好,我有一个问题,我希望用户输入一个电话号码(在文本字段中),即数字又名不是字符串,如果它是字符串,它会打印出电话格式错误,如果不是10位数字也不以05还显示一条消息 这是我的代码:
String phone2=phone.getText().trim();
if(phone2.isEmpty()){//is text field empty
JOptionPane.showMessageDialog(null,"Add Phone number !");
phone.requestFocus();
return;
}
// starts with 05
String zereofive = phone2.substring(0, 2);
for(int i=0;i<phone2.length();i++){
if (!Character.isDigit(i)) {
JOptionPane.showMessageDialog(null, "Wrong format for phone");
phone.requestFocus();
return;
} // check length of phone number
else if (phone2.length() != 10 && !zereofive.equals("05")) {
JOptionPane.showMessageDialog(null, "enter 10 digits for the phone number and starts with 05");
phone.requestFocus();
return;
}
}
但它仅显示“电话格式错误”消息
另一件事是,对于这个年龄段,我想捕捉我这样做的数字格式异常:
int agee = 0; // Default if nothing inputed
try{
// AGE
//is Age text field empty
String theAge = age.getText().trim();
if (theAge.isEmpty()) {
JOptionPane.showMessageDialog(null, "Enter your age !!");
age.requestFocus();
return;
}
if (theAge.mat
ches("\\d+")) {
agee = Integer.parseInt(theAge);
}
// only 18 + can register
if (agee < 18) {
JOptionPane.showMessageDialog(null, "You can't register because you are under 18!");
age.requestFocus();
return;
}}
catch(NumberFormatException ex)
{
JOptionPane.showMessageDialog(null,"Please enter number for age");
}
仅在我在文本字段中输入字符串“您无法注册,因为您未满18岁!”时在此显示。消息。
答案 0 :(得分:0)
我认为必须考虑使用的逻辑。 对于第一个问题: 您认为什么不起作用?您当前的逻辑是:
If (input empty) {
"Add Phone number !"
}
if (one input char is not digit) {
"Wrong format for phone"
} else if (input length != 10 or does not start with "05") {
"enter 10 digits for the phone number and starts with 05"
}
因此,如果输入的字符不是数字,则会显示“电话格式错误”。
第二个问题: 您在开始时将年龄设置为0。 然后,您使用正则表达式检查输入内容是否仅包含数字。 如果这不是真的,则您永远不会解析输入,因此就永远不会抛出NumberformatException(捕获它也是没有必要的)。您可以使用以下示例
if (theAge.matches("\\d+")) {
agee = Integer.parseInt(theAge);
if (agee < 18) {
JOptionPane.showMessageDialog(null, "You can't register because you are under 18!");
age.requestFocus();
return;
}
} else {
JOptionPane.showMessageDialog(null,"Please enter number for age");
}