繁体   English   中英

我在Java语言中无休止的循环

[英]I have an endless loop in Javascript

每当我运行此代码时,浏览器就会崩溃。 我是在犯一个愚蠢的错误,还是我的代码存在严重错误? 我已经尝试过尽可能多地调试我的代码,但是当通过调试器进行调试时,我的代码显然没有错。 怎么了? 非常感激你的帮助。

 function FrogFunction() { var yedec; var decidertwo; var decfrog; var ChordProgression = ["C Minor"]; var decider = Math.random(); var CurrentChord; if (decider <= 0.25) { var CurrentChord = "D Minor"; } else if (decider > 0.25 && decider <= 0.5) { var CurrentChord = "E♭ Major"; } else if (decider > 0.5 && decider <= 0.75) { var CurrentChord = "F Minor"; } else if (decider > 0.75 && decider <= 1) { var CurrentChord = "A♭ Major"; } ChordProgression.push(CurrentChord); while (CurrentChord != "B♭ Major" || CurrentChord != "G Major") { //if dminor if (CurrentChord = "D Minor") { decidertwo = Math.random(); if (decidertwo <= 0.5) { CurrentChord = "G Major"; } else { CurrentChord = "B♭ Major"; } } //if dminor //if e flat major else if (CurrentChord = "E♭ Major") { yedecider = Math.random(); if (yedecider <= 0.3) { CurrentChord = "F Minor"; } else if (yedecider <= 0.6 && yedecider > 0.3) { CurrentChord = "G Major"; } else { CurrentChord = "A♭ Major"; } } //if e flat major //if f minor else if (CurrentChord = "F Minor") { decfrog = Math.random(); if (decfrog <= 0.5) { CurrentChord = "G Major"; } else { CurrentChord = "B♭ Major"; } } //if f minor //if a flat major else if (CurrentChord = "A♭ Major") { yedec = Math.random(); if (yedec <= 0.25) { CurrentChord = "E♭ Major"; } else if (yedec <= 0.5 && yedecider > 0.25) { CurrentChord = "F Minor"; } else if (yedec <= 0.75 && yedecider > 0.5) { CurrentChord = "G Major"; } else { CurrentChord = "B♭ Major" } } //if a flat major ChordProgression.push(CurrentChord); //past this bracket is the end bracket of the while loop } document.getElementById("PlaceForChords").innerHTML = ChordProgression; } 
 <center> <p></p> <p><button onclick="FrogFunction()">Generate Chords</button></p> <p id="PlaceForChords"></p> </center> 

此语句永远不会false

while(CurrentChord!="B♭ Major" || CurrentChord!="G Major"){

CurrentChord永远不能同时是"B♭ Major" "G Major" 永远不是那两个的其中之一。

要解决此问题,请替换|| &&

“虽然和弦不是“ B♭大调” 和弦不是“ G大调” => “ do something”

另外, 最好使用!==代替!=

因此,已修复:

while(CurrentChord !== "B♭ Major" && CurrentChord !== "G Major"){

要么:

while(!(CurrentChord === "B♭ Major" || CurrentChord === "G Major")){

从逻辑上讲,它们将返回相同的值。 您使用的只是个人喜好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM