私の割り当てから引用:この質問の目的は、(a)選択構造を実践すること(b)反復構造を適用すること(c)文字列を操作することです
do {
System.out.print("Enter MC for MasterCard or VISA for VISA card: ");
cardType = scn.next();
} while (!cardType.equals("MC") && !cardType.equals("VISA"));
if (cardType.equals("MC")) {
do {
System.out.print("Enter MasterCard card no.: "); // Get input:
// mastercard
// number
cardNo = scn.nextLong();
cardLength = Long.toString(cardNo).length(); // Get length of
// mastercard
// number input
dbUserPrefix = cardNo / java.lang.Math.pow(10, 14);
intUserPrefix = (int) dbUserPrefix;
for (int i = 0; i <= 5; i++) {// for validating prefix
// 4 possibilities
if (intUserPrefix == cardPrefix[i]) {
if (cardLength == 16) { // Prefix & length correct break;
} else { // Prefix correct, length wrong
state = 1;
break;
}
} else {
if (cardLength == 16) { // Prefix wrong, length correct state = 2;
} else { // Prefix & length incorrect
state = 3;
}
}
}
if (state == 0) {
System.out.println("SUCESS");
} else if (state == 1) {
System.out.println("Your length of card number is incorrect.");
} else if (state == 2) {
System.out.println("Your card prefix is incorrect.");
} else {
System.out.println("Your card prefix and length of card number is incorrect.");
}
break;
} while (cardLength != 16);
}
ここで必要な主なものは、クレジット カードの正しいプレフィックスが 51、52、53、54 または 55 であること、および正しい長さが 16 (桁数) であることを検証するプログラムです。検証が失敗した場合は、エラーを出力する必要があります。問題は、prefix==51 以外に、試した残りのプレフィックスが state==2 になることです。