-4

我需要在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 ??;
}
4

2 回答 2

4

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

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

    public abstract String generateNumber();
}

这样,您可以执行以下操作:

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

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

于 2012-12-23T15:31:42.670 回答
0

但是,不完全确定您的问题是什么。为了解决我在代码中看到的一个错误,我每次都会将 generate 分配给一个字符串。就像是;

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();
}

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

于 2012-12-23T15:31:26.333 回答