私はNINのチェッカーを作ろうとしていますが、ユーザーが正しい文字を入力してもwhileループは終了しません。私が論理ORを使用したかどうかはわかりません。ループチェッカーは論理的に終了しませんが、
System.out.println("Give the Doctor's 9Digit National Insurance Number");
scanner.nextLine();
String temp1 = scanner.nextLine();
while((temp1.charAt(0)=='D' || temp1.charAt(0)=='F' || temp1.charAt(0)=='I' ||
temp1.charAt(0)=='Q'|| temp1.charAt(0)=='U' || temp1.charAt(0)=='V' || Character.isDigit(temp1.charAt(0)))
||
(temp1.charAt(1)=='D' || temp1.charAt(1)=='F' || temp1.charAt(1)=='I' ||
temp1.charAt(1)=='Q'|| temp1.charAt(1)=='U' || temp1.charAt(1)=='V' ||
temp1.charAt(1)=='O'|| Character.isDigit(temp1.charAt(1)))
||
(!Character.isDigit(temp1.charAt(2)) || !Character.isDigit(temp1.charAt(3)) ||
!Character.isDigit(temp1.charAt(4)) || !Character.isDigit(temp1.charAt(5)) ||
!Character.isDigit(temp1.charAt(6)) || !Character.isDigit(temp1.charAt(7)))
||
(temp1.charAt(8)!='A' || temp1.charAt(8)!='B' || temp1.charAt(8)!='C' || temp1.charAt(8)!='D')
)
{
System.out.println("THE RIGHT FORMAT OF NIN IS: ");
System.out.println("2 PREFIX LETTERS THEN 6 DIGITS & 1 SUFIX LETTER");
System.out.println("PREFIX LETTERS CANNOT BE D, F, I, Q, U or V & 2ND PREFIX CANNOT BE O");
System.out.println("SUFIX LETTERS CAN ONLY BE A, B, C, D");
System.out.println("Give NIN in the right Format!");
temp1 = scanner.nextLine();
}
String dNin = temp1 ;`
このコードはわかりませんが、これは正しいプログラミング方法ではありません。 –
まず、ブール変数のような停止条件を最小限に抑えてください。次に、 'Regex'の使い方についてどう思いますか? –