亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何生成沒有重復號碼的 4 位 PIN 碼

如何生成沒有重復號碼的 4 位 PIN 碼

眼眸繁星 2023-07-13 14:35:03
我是 android 編程新手,我想制作一個沒有任何重復的 4 位 PIN 碼生成器。我該怎么做??我還不知道如何很好地循環。謝謝你??!我已經嘗試過隨機,但它給了我重復的數字。int randomPIN = (int)(Math.random()*9000)+1000;String pin = String.valueOf(randomPIN);dummy.setText(pin);我正在尋找 1354, 4682, 3645 的結果,但結果大多是 3344, 6577, 1988
查看完整描述

4 回答

?
牧羊人nacy

TA貢獻1862條經驗 獲得超7個贊

創建一個數字列表,對其進行打亂,然后返回前四位數字。這是作為靜態方法執行此操作的一種方法:


/* No need for a new list each time */

private static final List<Integer> digits =

    new ArrayList<>(Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 8, 9));


/**

 * Returns a PIN string that contains four distinct digits.

 */

public static String nextPin() {

    Collections.shuffle(digits);

    final StringBuilder sb = new StringBuilder(4);

    for (Integer digit : digits.subList(0, 4)) {

        sb.append(digit);

    }

    return sb.toString();

}

顯然,如果您希望數字作為數字數組而不是字符串,那么您處理子列表的方式將與我在此處顯示的方式不同。


如果您只返回子列表本身,請注意,每次您返回子列表時,它都會發生變化


查看完整回答
反對 回復 2023-07-13
?
料青山看我應如是

TA貢獻1772條經驗 獲得超8個贊

有點學術性的練習 - 這是一個需要 Java 8 的練習:


    // flag to control if you want number sequence to be the same each run

    boolean repeatable = true;


    // seed for randomness - for permutation of list (not the integers)

    Random rnd = new Random((repeatable ? 3 : System.currentTimeMillis()));


    // generate randomized sequence as a List

    List<Integer> myNums;

    Collections.shuffle((myNums = IntStream.rangeClosed(1000, 9999).boxed().collect(Collectors.toList())), rnd);


    // Work with list...

    for (Integer somePin : myNums) {

        Log.i("", "Next PIN: "+somePin);

    }


查看完整回答
反對 回復 2023-07-13
?
慕慕森

TA貢獻1856條經驗 獲得超17個贊

//創建列表ArrayList numbers = new ArrayList(); 隨機 randomGenerator=new Random();while (numbers.size() < 4) {int random = randomGenerator .nextInt(4); if (!numbers.contains(random)) {numbers.add(random);}}



查看完整回答
反對 回復 2023-07-13
?
素胚勾勒不出你

TA貢獻1827條經驗 獲得超9個贊

您必須一步一步添加隨機整數并檢查是否有重復項。


Random random = new Random();

int rdmInt = random.nextInt(9);

String pin = "";

while (pin.length() < 4) {

    rdmInt = random.nextInt(9);

    String addition = String.valueOf(rdmInt);

    if (pin.contains(addition)) continue;

    pin += addition;

}


查看完整回答
反對 回復 2023-07-13
  • 4 回答
  • 0 關注
  • 233 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號