2015-07-11 147 views
-7

我已经看过网站www.W3schools.com,www.developer.mozilla.org,www.codeacademy.com和www.tutorialspoint.com,并且仍然很难找到一个示例我的代码出了什么问题。首先,这里是我的代码:if循环内的语句

var randomNumber = Math.floor(Math.random()); 
while(randomNumber > .5) { 
var name = prompt("Do you want to play a game? Like checkers or something?"); 
if (name === "Yes") { 
    console.log("Good jorb!"); 
} else if(name === "yes") { 
    console.log("Good jorb!"); 
} else if(name === "Yes.") { 
    console.log("Good jorb!"); 
} else if(name === "yes.") { 
    console.log("Good jorb!"); 
} else if(name === "Yup") { 
    console.log("Good jorb!"); 
} else if(name === "Yup.") { 
    console.log("Good jorb!"); 
} else if(name === "yup.") { 
    console.log("Good jorb!"); 
} else if(name === "yup") { 
    console.log("Good jorb!"); 
} 
} else if(name === "No.") { 
    console.log("Go away!!!!!"); 
} else if(name === "No") { 
    console.log("Go away!!!!!"); 
} else if(name === "no") { 
    console.log("Go away!!!!!"); 
} else if(name === "no.") { 
    console.log("Go away!!!!!"); 
} else if(name === "nope") { 
    console.log("Go away!!!!!"); 
} else if(name === "nope.") { 
    console.log("Go away!!!!!"); 
} else if(name === "Nope") { 
    console.log("Go away!!!!"); 
} else if(name === "Nope.") { 
    console.log("Go away!!!!!"); 
} 
else { 
    console.log("I don't know, man. I don't know"); 
} 
var randomNumber = Math.floor(Math.random()); 
} 

我的问题是如何得到的提示循环是否符合正确的需求(通过while循环设置)。我觉得我已经在while循环中以不合理的方式提示提示,或者for循环可能会更有意义,但是我已经阅读过while循环,通常用于当您希望事件保持循环时直到满足特定的条件(而不是在事件持续循环直到变量计数达到特定点为止的循环中)。虽然我感谢任何人提供帮助,使我的循环功能更有效(我知道我有很多其他条件,如果我肯定可以巩固数组或其他)但没有必要。谢谢你的帮助。

+0

我建议如果你希望你的帖子被认真对待,你不会无缘无故地投入骂人的话。 – Anonymous

+0

第二个'var randomNumber = ...'应该是'randomNumber = ...' –

+2

我对你试图实现的总体感到困惑。但是,我可以告诉你'while'循环永远不会像写入那样运行。 'Math.floor'将数字降到最接近的整数。 'Math.random'返回0到1之间的数字,不包括1.这意味着'Math.floor(Math.random())'将始终为0,因此不会超过0.5循环。 – DLH

回答

1

有以下几个原因:

  • 'Math.floor(的Math.random())',永远是零,因此该循环将不会开始。 Math.random()会给出一个介于0和1之间的数字,而你是地板,这意味着你总是舍入,这意味着零。
  • 如果你想停下来的时候,最好是“休息”;当条件合适时。

此代码将工作:

var randomNumber = Math.random(); 
while(randomNumber > .5) { 
var name = prompt("Do you want to play a game? Like checkers or something?"); 
if (name === "Yes") { 
    console.log("Good jorb!"); break; 
} else if(name === "Nope.") { 
    console.log("Okay that is fine."); 
} else { 
console.log("I don't know, man. I don't know"); 
} 
randomNumber = Math.random(); } 

但现在它不只是依赖于答案的循环是否将继续,但也randomNumber!

1

这条线几乎总是返回0,这就是为什么它没有进入这个时代。

var randomNumber = Math.floor(Math.random()); 

的Math.random()的返回浮点值低于1从0开始......与Math.floor你得到这的确为0

+1

根据规范,['Math.random'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random)可以返回0,但*从不*返回1. – zwol

+0

Tahnks澄清它@zwol。回答更正 –

1

你的变量randomNumber已经与初始化INT部分你的第一行,改变它的值只需使用randomNumber = newValue其中newValue是你想要设置它的值,使用方法或硬编码值。您不需要再次使用var关键字。

而且使用上Math.randomMath.floor方法将总是返回0,为的Math.random将返回0和1之间的数字,这将地板为0

你失踪您while循环右括号。

我清理你的代码稍微有点链,如果布尔运算符,但有更好的方法来构造这段代码。

var randomNumber = Math(Math.random()); 
while(randomNumber > .5) { 
    var name = prompt("Do you want to play a game? Like checkers or something?"); 
    if (name === "Yes" || name === "yes" || name === "Yes." || name === "yes." || name === "Yup" || name === "Yup." || name === "yup." || name === "yup") 
    { 
     console.log("Good jorb!"); 
    } 

    else if(name === "No." || name === "No" || name === "no" || name === "no." || name === "nope" || name === "nope." || name === "Nope" || name === "Nope.") 
    { 
     console.log("That's too bad."); 
    } 
    else 
    { 
     console.log("I don't know, man. I don't know"); 
    } 
    randomNumber = Math(Math.random()); 
};// Close your while loop. 
+0

你说得对!我修正了这个问题,在写这篇文章的时候在其他地方写了C#代码,我的道歉和感谢。还有很多更好的方法来做到这一点(正则表达式/数组等),只是用它来保持原始海报更易于理解的格式。 –

+1

对,是的,你根本不必为自己辩护,特别是在你立即纠正之后。我会删除我以前的评论。 – nnnnnn

0

试试这个:(很抱歉,如果我有任何的计数错误的长咒骂的......有很多人...)

while(true){ 
    var name=prompt("Do you want to play a game? Like checkers or something?"); 
    if(name.search(/^[yY](es|up)\.?$/)!=-1){ 
     console.log('Good jorb!'); 
    }else if(name.search(/^[nN]o(pe)?\.?$/)!=-1){ 
     console.log('F'+'U'.repeat(12)+'C'.repeat(13)+'K'.repeat(9)+' Y'+'O'.repeat(11)+'U'.repeat(18)+'!'.repeat(12)); 
    }else{ 
     console.log("I don't know, man. I don't know"); 
    } 
    if(condition){ 
     break; 
    } 
} 

只是为了澄清有关规则表达式:它们实质上是用大写字母或否和标点符号来查找单词的不同形式,或者不表示整个单词(^是字符串的开头,$是字符串的结尾)。这应该为你节省很多麻烦。

哦,并尽量避免while(true)真正的开发实践。 for(var i=0;i<2e7;i++)或类似的是一个更好的做法,但我认为如果它只是命令行,那应该没问题。

1

你的while循环永远不会运行。
Math.random()返回一个数字n,其中0 < = n Math.floor(n)返回n,舍入为零。

所以你的变量randomNumber总是等于零。

你也可以用一组值来替换你的if语句来检查。
然后查看该数组中的名称索引。
如果索引是-1,则不存在,否则记录“Good Jorb!”

var randomNumber = Math.random(); 
while(randomNumber > .5) { 
    var name = prompt("Do you want to play a game? Like checkers or something?"); 
    var yesArray = ["Yes", "yes", "Yes.", "yes.", "Yup", "Yup.", "yup.", "yup"]; 
    if(yesArray.indexOf(name) == -1) { 
    console.log("I don't know, man. I don't know"); 
    else { 
    console.log("Good jorb!"); 
    } 
    randomNumber = Math.random(); 
}