我创建了一个能够打印1-24之间所有数字的函数。如果数字可以分为3,它将打印Fizz,如果可以分为5,它将打印Buzz。
如果开始>停止,我想添加一条错误消息。我怎样才能做到这一点?我试着提醒,但根本没有用。
2)当我用start = 2和stop = 24打印函数时,显示的第一个值是" undefined"。这是为什么?
通过使用.substr(1)我想删除左边的第一个逗号。
function fizzBuzz(start, stop) {
if (start >= stop)
var returnString;
for(var i= start; i <= stop; i++) {
returnString += ",";
if (i % 3 === 0 && i % 5 === 0)
returnString += "FizzBuzz";
else if (i % 3 === 0)
returnString += "Fizz";
else if (i % 5 === 0)
returnString += "Buzz";
else
returnString += i;
}
return returnString;
}
var result = fizzBuzz(2, 24).substr(1);
提前致谢!
答案 0 :(得分:2)
您需要在if子句
中进行验证if (start >= stop)
{
return "start must be less than stop";
}
您需要先用空字符串初始化returnString
var returnString = "";
答案 1 :(得分:2)
您想要start >= stop
显示错误消息,可以使用alert
来完成。由于returnString
变量未在任何地方声明,因此您第一次未定义。
所以尝试这样的事情。它会解决你的问题
function fizzBuzz(start, stop) {
var returnString = '';
if (start >= stop) {
alert('stop must be greater than start');
return;
}
for (var i = start; i <= stop; i++) {
returnString += ",";
if (i % 3 === 0 && i % 5 === 0)
returnString += "FizzBuzz";
else if (i % 3 === 0)
returnString += "Fizz";
else if (i % 5 === 0)
returnString += "Buzz";
else returnString += i;
}
return returnString;
}
答案 2 :(得分:2)
你可以这样做。
function fizzBuzz(start, stop) {
if (start >= stop){
throw "start must be less than stop";
}
var returnString = "";
...
...
...
return returnString;
}
var result = fizzBuzz(2, 24).substr(1);
答案 3 :(得分:1)
对于错误mressage使用throw
function fizzBuzz(start, stop) {
if (start >= stop){
throw "start must be less than stop";
}
....
如果要向用户显示信息,则需要捕获错误
try{
var result = fizzBuzz(72, 24).substr(1);
alert(result);
}catch(e){
alert(e); // alerts "start must be less than stop"
}
第二个问题是因为resultString
以undefined
开始生命,当你将字符串连接到undefined时,你得到字符串“UndefinedYOURSTRINGHERE”。将returnString
定义为空字符串。
var returnString = "";
答案 4 :(得分:1)
显示的第一个值是未定义的,因为这是您声明它的方式:
if (start >= stop)
var returnString;
请注意,您没有开括号,因此您基本上只是声明该变量。即使您没有声明它,但在以后执行时仍将是未定义的:
returnString += ",";
因为它总是以undefined
开始。
您可以将该行移至最后,也可以在第一次if
检查时添加提醒,并在start > stop
时返回:
function fizzBuzz(start, stop) {
if (start >= stop) {
alert('This is wrong');
return;
}
returnString = "";
for(var i= start; i <= stop; i++) {
if (i % 3 === 0 && i % 5 === 0)
returnString += "FizzBuzz";
else if (i % 3 === 0)
returnString += "Fizz";
else if (i % 5 === 0)
returnString += "Buzz";
else
returnString += i;
returnString += ",";
}
return returnString;
}
var res = fizzBuzz(2, 24);
var result = res.substring(0, res.length - 1);;
console.log(result);
答案 5 :(得分:0)
您可以使用throw语句来处理错误:
if (start >= stop){
throw "first integer must be less than 2nd integer"
}
您还必须使用初始值声明returnString:
var returnString = "";
答案 6 :(得分:-1)
问题出在这里,
if (start >= stop)
var returnString;
此处不需要if语句,但如果您需要,仍然可以这样做,
function fizzBuzz(start, stop) { if (start >= stop){
var returnString;
for(var i= start; i <= stop; i++) { returnString += ",";
if (i % 3 === 0 && i % 5 === 0) returnString += "FizzBuzz";
else if (i % 3 === 0) returnString += "Fizz"; else if (i % 5 === 0) returnString += "Buzz";
else returnString += i; }
return returnString;
}
}
var result = fizzBuzz(2, 24).substr(1);