输入时如何检查字符串是否输入正确?

时间:2014-04-11 15:41:08

标签: java exception character joptionpane

我有一个问题,我使用joptionpane来获取用户的邮政编码。我试图检查格式是否在L#L#L#L中,其中L是一个字母而#是一个数字。我试图提供错误检查以查看邮政编码是否采用该格式。如果我找到一个不存在的字符串,即string.charAt(5)但我不知道如何修复它,我会不断出错。

这是我在

发生错误的当前代码
String postalCode = JOptionPane.showInputDialog("Enter customer(s) " + (count + 1) + " postal code");

if (Character.isLetter(postalCode.charAt(0)) && 
    Character.isDigit(postalCode.charAt(1)) && 
    Character.isLetter(postalCode.charAt(2)) && 
    Character.isDigit(postalCode.charAt(3)) && 
    Character.isLetter(postalCode.charAt(4)) && 
    Character.isDigit(postalCode.charAt(5))) {
} 
else {
}

1 个答案:

答案 0 :(得分:4)

有几种解决方案。一种方法是首先验证输入的大小:

String postalCode = JOptionPane.showInputDialog("Enter customer(s) " + (count + 1) + " postal code");

if ((postalCode.length() == 7) && Character.isLetter(postalCode.charAt(0)) && Character.isDigit(postalCode.charAt(1)) && Character.isLetter(postalCode.charAt(2)) && Character.isDigit(postalCode.charAt(3)) && Character.isLetter(postalCode.charAt(4)) && Character.isDigit(postalCode.charAt(5))) {

} else {
}

另一种方法是使用正则表达式:

import java.util.regex.Pattern;
...
String postalCode = JOptionPane.showInputDialog("Enter customer(s) " + (count + 1) + " postal code");
if (Pattern.matches("^[a-zA-Z]\\d[a-zA-Z]\\d[a-zA-Z]\\d[a-zA-Z]$", postalCode)) {

} else {
}

编辑:请参阅下面的deanosaur评论,以获得更简洁的正则表达式。