首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为信用卡生成一个随机数

为信用卡生成一个随机数
EN

Stack Overflow用户
提问于 2014-11-14 18:35:13
回答 2查看 1.7K关注 0票数 0

我正在尝试使用这种方法生成一个16位的信用卡号码,如果issuerSymbol等于发行人AMER,则以4开头。随机数必须从3开始,如果issuerSymbol等于发卡者签证和5它它发卡主卡。

代码语言:javascript
复制
 public Integer getIssuerCode(String issuerSymbol){
            int randomInteger = 0;
          Random   random = new Random();


    for(int i = 0; i < 5; i++) {
            randomInteger = random.nextInt();
         if (issuerSymbol.equals(ISSUER_AMER_EXPRESS)) {

         }

          else {
             System.out.println("error");
         }
         if(issuerSymbol.equals(ISSUER_VISA)){

         }
          else{
              System.out.println("error");
          }
           if (issuerSymbol.equals(ISSUER_MASTER_CARD)){

         }
           else{
                 System.out.println("error");
           } 
    }

     return randomInteger;
        }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-14 18:39:21

我觉得你对自己有意见。您需要理解的是,如果if不是真的话,那么它就会进入其中

代码语言:javascript
复制
if (issuerSymbol.equals(ISSUER_AMER_EXPRESS)) {

} else if(issuerSymbol.equals(ISSUER_VISA)){

} else if (issuerSymbol.equals(ISSUER_MASTER_CARD)){

} else {
             System.out.println("error");
}

另一个建议是,Random类包括nextInt(int),它(根据Javadoc) *返回一个伪随机,在0(包含)和指定值(排他性)之间均匀分布的int值,从这个随机数生成器的序列中提取。

代码语言:javascript
复制
randomInteger = 3 + random.nextInt() % 3; 

代码语言:javascript
复制
randomInteger = 3 + random.nextInt(3); 

这将确保randomInteger始终位于3、4或5中。

票数 1
EN

Stack Overflow用户

发布于 2014-11-14 21:30:37

对于16位数,您可以得到的信用卡的最大数字是5999999999999999,而最大的int可以表示为2^31-1或2,147,483,647,所以我建议使用BigInteger。根据您计划如何使用randomInteger,它可以是一个BigInteger,也可以是一个字符串。

因为你试图得到一个16位数,但是第一个数字被确定为3,4或5,这意味着你需要15个随机整数。您可以使用if-else if语句根据发行人符号设置randomInteger,然后可以使用一个for循环,该循环选择15个随机整数并将它们附加到randomInteger中。

代码语言:javascript
复制
//assuming randomInteger is already equal to 3, 4, or 5 
//and randomInteger is of type BigInteger
for(int i = 0; i < 15; i++)
{
  randomInteger = randomInteger.multiply(BigInteger.valueOf(10);
  randomInteger = randomInteger.add(BigInteger.valueOf(random.nextInt(10));
}

如果您希望randomInteger是一个字符串,只需将第一个数字连接到一个空字符串(""),然后继续连接一个随机数字。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26936641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档