2015-07-11 280 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(); 
}