这是我在这里的第一篇文章,但我经常使用这个网站来帮助我解决我遇到的编码问题。我是一名中级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);
}
}
答案 0 :(得分:3)
您没有正确使用substring
方法。要将第一个字符作为子字符串,您需要使用the two-argument version of substring
来提供开始索引(包括)和结束索引(不包括)。
子字符串从指定的beginIndex开始,并扩展到索引endIndex - 1处的字符。
<强>参数强>:
beginIndex - 起始索引,包括在内。
endIndex - 结束索引,不包括。
(one-argument version of substring
从给定索引中获取字符串的其余部分的子字符串。)
子字符串以指定索引处的字符开头,并延伸到此字符串的末尾。
替换
card.substring(0).equals("4")
与
card.substring(0, 1).equals("4")
或者只是比较那里的角色。
card.charAt(0) == '4'
接下来,要获得前两个字符,请再次考虑结束索引是独占的这一事实。取代
card.substring(0,1).equals("37")
与
card.substring(0,2).equals("37")
答案 1 :(得分:0)
以下内容应该有效。 你有一些String.substring的语法错误。您可以在下面的java文档中引用String函数的完整列表:
http://docs.oracle.com/javase/7/docs/api/java/lang/String.html
if((cardType.equals("Visa") && card.substring(0,1).equals("4")) && (length == 13 || length == 16)){
System.out.println("Thank you, next step");
cardValid = true;
}
if((cardType.equals("Master Card")) && (card.substring(0,2).equals("51") || card.substring(0,2).equals("52") || card.substring(0,2).equals("53") || card.substring(0,2).equals("54") || card.substring(0,2).equals("55")) && (length == 16)){
System.out.println("Thank you, next step");
cardValid = true;
}
if((cardType.equals("American Express") && card.substring(0,2).equals("37") && length == 15)){
System.out.println("Thank you, next step");
cardValid = true;
}
if(!cardValid){
System.out.println("ERROR");
System.exit(0);
}
}