【发布时间】:2014-07-15 16:17:28
【问题描述】:
这是我在这里的第一篇文章,但我经常使用这个网站来帮助我解决遇到的编码问题。我是一名中级 Java 程序员。我明年要上大学,我正在考虑辅修计算机科学。
我正在制作一个非常基本的模拟信用卡验证器,它读取信用卡,检查它是否有效,然后通过电子邮件将信息发送给用户。除教育目的外,不得用于任何其他用途。
所以我有一段代码可以检查某人输入的信用卡字符串的多个条件。例如,如您所见,它会检查起始数字、卡名和位数.它检查条件,如果满足,则程序继续,如果不满足,则给出错误并立即停止。我有 99% 的把握确定我输入的信息是正确的,但无论如何它都会给我错误,我在这里不知所措。
对不起,如果我输入了这么多,我又是新来的。所以我在这里寻求关于我的逻辑的帮助,谢谢!
if((cardType.equals("Visa") && card.substring(0).equals("4")) && (length == 13 || length == 16)){
System.out.println("Thank you, next step");
cardValid = true;
}
if((cardType.equals("Master Card")) && (card.substring(0,1).equals("51") || card.substring(0,1).equals("52") || card.substring(0,1).equals("53") || card.substring(0,1).equals("54") || card.substring(0,1).equals("55")) && (length == 16)){
System.out.println("Thank you, next step");
cardValid = true;
}
if((cardType.equals("American Express") && card.substring(0,1).equals("37") && length == 15)){
System.out.println("Thank you, next step");
cardValid = true;
}
if(cardValid != true){
System.out.println("ERROR");
System.exit(0);
}
}
【问题讨论】:
-
如果您愿意,我可以添加其余代码,大约 300 行。再次感谢。
-
请注意,
if(cardValid != true)可以等效地写为if (!cardValid)。不过,rgettman 可以回答您的问题。 -
只是效率的一点,不要每次都给你的卡子串。创建一个包含前两个字符的新字符串: String cardStart = card.substring(0, 2);