4 回答

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();
}
顯然,如果您希望數字作為數字數組而不是字符串,那么您處理子列表的方式將與我在此處顯示的方式不同。
如果您只返回子列表本身,請注意,每次您返回子列表時,它都會發生變化

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

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

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;
}
添加回答
舉報