这是我目前的任务:
这是我目前的编码。我知道我做错了什么。我只是无法弄清楚我对switch语句做错了什么。
var BR = "<br />";
function person(name, sandwiches) {
this.name = name;
this.sandwiches = sandwiches;
function jump() {
var text = " leaps over an obstacle.";
return fname + text;
}
function run() {
var text = " runs as fast as they can";
return fname + text;
}
function dodge() {
var attack = math.random();
var att = math.round(attack);
var defense = math.random();
var def = math.round(defense);
if(att > def) {
return "You missed";
}
else {
return "You dodged";
}
}
function date() {
var today = new Date();
return today.toDateString();
}
function shout() {
var word = "Oh no";
return word.toUpperCase();
}
this.addSandwich = function (sandwiches) {
sandwiches = sandwiches + 1;
return sandwiches;
};
this.loseSandwich = function (sandwiches) {
sandwiches = sandwiches - 1;
return sandwiches;
};
}
var character = new person("Jerry", 1);
for(i=0; i < 100; i++) {
var random = Math.floor(Math.random() * 3);
switch(random) {
case 0:
character.loseSandwich(character.sandwiches);
console.log(sandwiches);
break;
case 1:
break;
case 2:
character.addSandwich(character.sandwiches);
break;
}
}
document.write("Name: " + character.name + BR);
document.write("Sandwiches: " + character.sandwiches + BR);
答案 0 :(得分:0)
Math.floor(Math.random()* 3)不是你想要的。
你希望像Math.random()%3这样的东西每次都能获得0,1或2
答案 1 :(得分:0)
不确定这是否是您的问题,但至少是其中之一;
在少数地方,您使用小写math
,例如:
function dodge() {
var attack = math.random();
JavaScript区分大小写,应该是Math.random()
而不是math.random()
另一个问题是这些功能:
this.addSandwich = function (sandwiches) {
sandwiches = sandwiches + 1;
return sandwiches;
};
不要改变三明治的数量。你得到三明治的值,加1或减1,然后返回改变的数字,但从不使用返回的结果。 您只是更改传入的变量的值,而不是更改人员实例上的三明治数。
请注意this.sandwiches
(person
实例上的变量)与sandwiches
(函数参数)不是同一个变量
我认为没有任何理由将三明治的数量传递给这些功能,他们可以这样做:
this.addSandwich = function () {
this.sandwiches = this.sandwiches + 1;
};
或更简单:
this.addSandwich = function () {
this.sandwiches++;
};
这里的另一个问题是:
character.loseSandwich(character.sandwiches);
console.log(sandwiches);
console.log
语句正在尝试记录sandwiches
,但此时不是变量。您可能想要console.log(character.sandwiches);
但是这不会导致异常,它只会始终记录undefined
。