坚持这个练习。
创建一个程序,挑选比赛或抽奖的获胜者。在用户将条目留空之前提示参赛者的姓名。然后随机选择一名获胜者。
示例输出
输入名称:荷马
输入名称:Bart
输入名称:Maggie
输入名称:Lisa
输入名称:Moe
输入名称:
获胜者是......玛吉。
约束
•使用循环将用户输入捕获到数组中 •使用随机数生成器从阵列中提取值 •不要在阵列中包含空白条目 •某些语言要求您提前定义数组的长度。您可能需要找到另一个数据结构,如ArrayList。
**编程新手
这是我到目前为止所做的:
var name;
var users = [];
var winner = Math.floor(Math.random() * users.length + 1);
while (true) {
users.push(name = prompt("Enter a name:"));
if (name === "") {
break;
}
};
document.write(users + "<br>" + winner);
但是获胜者变量除1之外不显示任何内容?
答案 0 :(得分:2)
使用while循环
我不会给你正确的代码,因为这会破坏练习,但这就是这个想法:
setup array
while (true)
wait for input
if input blank
break out of loop
else
add entry to array
end-while
choose a winner
end
答案 1 :(得分:2)
在使用名称填充数组之前,您无法获取随机索引。首先,使用while循环收集名称,然后获取随机索引。
移动这一行:
var winner = Math.floor(Math.random() * users.length);
在while循环之后。
你想出了索引,但是你忘了从数组中选择带有相关索引的值。尝试添加:
document.write(users + "<br>" + users[winner]);
答案 2 :(得分:2)
你实际上几乎就在那里。
您的原始帖子中首先出现的错误是您在添加名称之前选择了用户。必须在输入后做出选择。
第二个问题是您将+1添加到随机nr生成器中。这是没有必要的,因为javascript数组是基于0的,所以对于4个条目的长度,索引从0到3。
您最不想要的是显示实际用户而不是数字,因为您可以访问用户数组并显示您选择的索引,如users[winner]
如果你想更加确定,你可以补充一点,如果没有添加用户,就不会有赢家;)(通过检查users.length
属性)
var name;
var users = [];
while (true) {
users.push(name = prompt("Enter a name:"));
if (name === "") {
break;
}
};
// the winner can only be decided here (and + 1 is not necessary as Javascript has a 0 based index in arrays)
var winner = Math.floor(Math.random() * users.length);
// add the user array so you can get the index
// the join will make sure that your users are shown below eachother
alert(users.join('\n') + "\n" + users[winner] + ' won');
答案 3 :(得分:0)
得到它,谢谢大家。
var name;
var users = [];
while (true) {
users.push(name = prompt("Enter a name:"));
if (name === "") {
break;
}
};
var numUsers = users.length - 1;
var winner = Math.floor(Math.random() * numUsers + 1);
document.write("The winner is..." + users[winner]);