【发布时间】:2013-12-21 13:33:39
【问题描述】:
好的,我正在尝试验证字符串(在本例中为 PPS 编号)。我似乎无法让它正常工作。
问题来了:
每个爱尔兰公民在达到一定年龄后都会获得一个 PPS 号码 18 是他们独有的并用于税收目的。一个有效的 PPS 号码总共正好有 8 或 9 个字符。它将开始 正好有 7 位数字,并以一或两个大写字母结尾。所以, 例如,1234567A 将被视为有效的 PPS 编号,就像 7863456RT,但 6478TY*%& 和 8768086b 都将被视为无效 PPS 号码。
package Assess2013Two;
import java.util.Scanner;
public class Group3Solution {
public static void main(String[] args)
{
int index = 0;
char ch;
Scanner input = new Scanner(System.in);
System.out.print("Please enter your PPS number: ");
String ppsNumber = input.nextLine();
if(ppsNumber.length() >= 8 && ppsNumber.length() <= 9){
if(ppsNumber.charAt(7) >= 'A' && ppsNumber.charAt(7) <= 'Z' && ppsNumber.charAt(8) >= 'A' && ppsNumber.charAt(8) <= 'Z')
{
if(ppsNumber.length() == 8) {
ch = ppsNumber.charAt(index);
while(index < ppsNumber.length() && ch >= '0' && ch <= '9'){
index++;
if(index < ppsNumber.length())
ch = ppsNumber.charAt(index);
}
if(index == ppsNumber.length())
System.out.println("You entered a valid PPS number.");
else
System.out.println("Invalid PPS number!! At least one of the first 7 characters were not digits.");
}else {
ch = ppsNumber.charAt(index);
while(index < ppsNumber.length()-2 && ch >= '0' && ch <= '9'){
index++;
if(index<ppsNumber.length()-2)
ch = ppsNumber.charAt(index);
}
if(index == ppsNumber.length()-2)
System.out.println("You entered a valid PPS number.");
else
System.out.println("Invalid PPS number!! At least one of the first 7 characters were not digits.");
}
}else
System.out.println("Invalid PPS number!! The second-last or last, or both, were not uppercase letters");
}else
System.out.println("Invalid PPS number!! It must contain at least 8 to 9 characters.");
input.close();
}
}
【问题讨论】:
-
在
if/else中使用大括号,这样会让人困惑 -
在您的 while 循环中,您正在检查索引
-
@Gayathri 我也试过了。它在某些情况下有效,但并非适用于所有情况。
-
你能具体说明它失败的情况吗?
-
你也可以考虑在 if((ppsNumber.charAt(7) >= 'A' && ppsNumber.charAt(7) = 'A' && ppsNumber.charAt(8)