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;
}
添加回答
举报
