-4

ランダムなカード番号を生成し、有効かどうかをチェックするものをJavaで作成する必要があります。これは、メインに必要なコードです

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

しかし、あなたの質問が何であるか完全にはわかりません。コードにある1つのエラーを解決するために、毎回文字列に生成を割り当てます。何かのようなもの;

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 に答える