我正在尝试使用此方法来生成以4开头的16位信用卡号
如果issuerSymbol等于ISSUER AMER EXPRESS。如果issuerSymbol等于ISSUER VISA,则随机数必须以3开头,如果它是ISSUER MASTER CARD,则随机数必须以5开头。

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

最佳答案

我认为您是否有其他问题。您需要了解,如果if不是true,它将进入else,应将代码更改为if if else。

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)*从该随机数生成器的序列中得出一个伪随机数,均匀分布的int值在0(含)和指定值(不含)之间。

randomInteger = 3 + random.nextInt() % 3;


要么

randomInteger = 3 + random.nextInt(3);


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

10-05 19:17