java生成并检查信用卡

时间:2012-12-23 15:26:39

标签: java

我需要在java中创建一些生成随机卡号的东西,并检查它是否有效。 这是我们在main

中必须具备的代码
public enum CardType { VISA, MASTER, AMERICAN_EXPRESS, DISCOVERY }
public static void main(String[] args) {
    CardType type = CardType.VISA;
String cardNumber = generateCardNumber(type);
    System.out.println("Generated " + type + " number " + cardNumber + " validity check: "  + isValid(cardNumber));
    type = CardType.MASTER;
cardNumber = generateCardNumber(type);
System.out.println("Generated " + type + " number " + cardNumber + " validity check: " + isValid(cardNumber));
  }

现在我需要使用这个方法。但是我怎样才能使它(CardType type = CardType.VISA;)工作? 我需要回报什么? 一点点帮助将拯救我的生命:)

public static String generateCardNumber(CardType cardType){
Random rnd = new Random();
int counter=0;
while(counter<=16){
int generate = rnd.nextInt(9); 
counter++;
}
return ??;
}

2 个答案:

答案 0 :(得分:4)

您可以在枚举中使用抽象方法,并使用它来生成已知的有效卡号:

public enum CardType
{
    VISA {
        @Override
        public String generateNumber()
        {
            // whatever
        }
    },
    // Other card types

    public abstract String generateNumber();
}

这样,你可以这样做:

final String cardNumber = CardType.VISA.generateNumber();

并且不用费心检查之后生成的数字的有效性,因为您可以确保它在方法本身内有效。

答案 1 :(得分:0)

但不完全确定您的问题是什么。要解决我在代码中看到的一个错误,我每次都会将生成分配给一个字符串。喜欢的东西;

public static String generateCardNumber(CardType cardType){
    Random rnd = new Random();
    int counter=0;
    StringBuffer stringBuffer = new StringBuffer();
    while(counter<=16){
        int generate = rnd.nextInt(9); 
        stringBuffer.append(generate);
        counter++;
    }
    return stringBuffer.toString();
}

然后验证字符串是卡片将需要根据您的要求执行另一个步骤。