我想制作一个if语句,其中用户必须输入一个16位数的字符串,如果它们失败,则必须再次尝试。我之前用c ++做过这个,但是不知道如何在java中做到这一点。到目前为止这是我的代码。我还希望卡号以这种格式保存" xxxx xxxx xxxx xxxx"像一个卡号。我应该以那种格式退回吗?
public PersonalAccount(String user_firstName, String user_lastName, String user_accountNumber, String street, String town, String postcode, String user_cardNumber, char user_cardType) {
super(user_firstName, user_lastName, user_accountNumber, street, town, postcode);
if (user_cardNumber.length() == 16) {
cardNumber = user_cardNumber;
} else {
System.out.println("Incorrect card number length");
}
cardType = user_cardType;
}
答案 0 :(得分:0)
应该抛出异常(EG IllegalArgumentException
)而不是向控制台打印错误消息......
通过这种方式,调用者可以捕获异常并对其进行操作。
至于格式,如果你想格式化字符串,即没有空格,在每四个数字后面都有空格,你应该尝试这样的事情:
public String formatCardNumber(String cardNumber)
{
StringBuilder sb = new StringBuilder(20);
for ( int i = 0; i < 16; i+=4)
{
sb.append(' ').append(user_cardNumber, i, i + 4);
}
return sb.substring(1);
}
答案 1 :(得分:0)
你可以使用这样的方法
如果格式正确,则每隔四位数后返回带空格的值。
String checkCardnumber(String user_cardNumber) {
if(!user_cardNumber.matches("[\\d]{16}")) {
throw new IllegalArgumentException();
} else {
return user_cardNumber.replaceAll("([\\d]{4})([\\d]{4})([\\d]{4})([\\d]{4})", "$1 $2 $3 $4");
}
}