カナダの郵便番号をA1A1A1またはA1A1という形式で検証するプログラムを作成しようとしています。私は、2番目の形式の空白を認識するためにコードを取得する際に問題があります。Javaの妥当性確認郵便番号
私はそれを実行し、2番目のフォーマットを試してみると、正当な郵便番号であっても2回無効と表示されます。
アイデア?
public class validatePostalCodeTest {
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
System.out.println("Please enter postalcode:");
while (kb.hasNext()){
String posCode = kb.next();
if (posCode.length() > 7)
System.out.println("\nInvalid");
if (posCode.length() < 6)
System.out.println("\nInvalid");
if (posCode.length()== 7){
boolean valid = true;
for (int i = 0; i < posCode.length(); i++){
char a = posCode.charAt(0);
char b = posCode.charAt(2);
char c = posCode.charAt(4);
char d = posCode.charAt(1);
char e = posCode.charAt(5);
char f = posCode.charAt(6);
char g = posCode.charAt(3);
if(! Character.isLetter(a))
valid = false;
else if (! Character.isLetter(b))
valid = false;
else if (! Character.isDigit(c))
valid = false;
else if (! Character.isDigit(d))
valid = false;
else if (! Character.isLetter(e))
valid = false;
else if (! Character.isDigit(f))
valid = false;
else if (! Character.isWhitespace(g))
valid = false;
break;
}
if (valid) System.out.println("\nValid");
else System.out.println("\nInvalid");
}
if (posCode.length()== 6){
boolean valid = true;
for (int i = 0; i < posCode.length(); i++){
char a = posCode.charAt(0);
char b = posCode.charAt(2);
char c = posCode.charAt(4);
char d = posCode.charAt(1);
char e = posCode.charAt(3);
char f = posCode.charAt(5);
if(! Character.isLetter(a))
valid = false;
else if (! Character.isLetter(b))
valid = false;
else if (! Character.isLetter(c))
valid = false;
else if (! Character.isDigit(d))
valid = false;
else if (! Character.isDigit(e))
valid = false;
else if (! Character.isDigit(f))
valid = false;
break;
}
if (valid) System.out.println("\nValid");
else System.out.println("\nInvalid");
}
System.out.println("\nPlease enter a postalcode:");
}
System.out.println("Program ending due to end-of-file");
}
}
入力が '「A1A 1A1」である場合は、'、そして 'posCode.charAt(0) posCode.charAt(2)は '' A ''、 'posCode.charAt(4)'は '' 1 ''です。 – ajb
これは割り当てですか?正規表現ははるかに簡単かもしれません。 –
私は適切な文字位置を固定しましたが、私はまだ同じ問題に遭遇しています - そして、これは割り当てであり、正規表現についてまだ教えられていないので、受け入れられるかわかりません。 – Arima