2 回答

TA貢獻1712條經驗 獲得超3個贊
為了解釋為什么您的代碼不返回 3 個值,每當您調用您的方法時,for 循環都會運行 3 次但什么也不做,因為循環內沒有代碼。return 語句計算一個隨機值并返回該值。所以實際上,當您調用一次 luckyNumbers() 方法時,只返回一個值。
要使用 for 循環根據您的想法生成 3 個隨機數,您可以執行以下操作:
public void luckyNumbers() {
for (int i = 1; i <= 3; i++) {
//Print random number here
System.out.print((Math.random() * 10));
}
}
另一種簡單的方法是調用此 luckyNumbers() 方法 n 次以從另一個方法返回 n 個隨機數。
如果您的目標是一次返回 3 個幸運數字,則根據您的要求將生成的隨機數添加到整數數組或 ArrayList 中并返回。

TA貢獻1859條經驗 獲得超6個贊
LuckyNumbers 到目前為止還可以,但是它給出了數字[0..9],所以+ 1:;
class Test {
public int luckyNumbers() {
return (int) (Math.random() * 10) + 1;
}
..并且在主要方法中通常(使用System.out.println()):
public static void main(String... args) {
Test testObj = new Test();
for (int i = 1; i <= 3; i++) {
System.out.println(testObj.luckyNumbers());
}
}
}
編輯:
瞧(不在主要方法中,但后來(為什么不???)void):
public void luckyNumbers() {
for (int i = 1; i <= 3; i++) {
System.out.println((int) (Math.random() * 10) + 1);
}
}
public static void main(String... args) {
new Test().luckyNumbers();
}
編輯2:
瞧,3 個數字 [1-10]:
public int[] luckyNumbers() {
return new int[] {
Math.random() * 10) + 1,
Math.random() * 10) + 1,
Math.random() * 10) + 1
};
}
EDIT3(drawLuckyUsers 方法):
輸入:所有用戶的列表,帶有個人幸運數字 [1-10]
輸出:獲獎用戶列表
public java.util.List<User> drawLuckyUsers(java.util.List<User> allUsers) {
//helper structure to map all users by luckyNumber
java.util.Map<Integer, List<User>> helper = new java.util.TreeMap<>();
for (User u : allUsers) {
if(helper.conatins(u.getLuckyNumber())) {
helper.get(u.getLuckyNumber()).add(u);
} else {
List<User> tmp = new ArrayList<>(2);
tmp.add(u);
helper.put(u.getLuckyNumber(), tmp);
}
}
java.util.List<User> winner = new java.util.ArrayList<>();
for(int i = 0; i < 3; i++) {
winner.addAll(helper.get(luckyNumbers()));
}
return winner;
}
與..luckNumbers() v1:
public int luckyNumbers() {
return (int) (Math.random() * 10) + 1;
}
添加回答
舉報