JavaScript if “x = (a || b || c)” statement not working

余生长醉 提交于 2019-11-26 21:07:41
jfriend00

All your multiple comparisons that look like this:

if (sct == ("Sine" || "Cosine" || "Tangent"))

need to be changed to this:

if (sct == "Sine" || sct == "Cosine" || sct == "Tangent")

To explain, when you do this ("Sine" || "Cosine" || "Tangent"), that evaluates to just "Sine" so if (sct == ("Sine" || "Cosine" || "Tangent")) is the same as if (sct == "Sine") which is obviously not what you want.


Here is your code with all the corrections applied:

var opposite = 1
var adjacent = 1
var hypotenuse = 1
var sct = "SohCahToa"
while (!(sct == "Sine" || sct == "Cosine" || sct == "Tangent")) {
    sct = prompt("Sine (unknown adjacent) / Cosine (unkown opposite side) / Tangent (unknown hypotenuse)")
    (!(sct == "Sine" || sct == "Cosine" || sct == "Tangent")) {
        alert("Spelling error, please try again")
    }
}
if (sct == "Sine" || sct == "Cosine")
    hypotenuse = prompt("What is the hypotenuse")
if (sct == "Sine" || sct == "Tangent")
    opposite = prompt("What is the opposite side")
if (sct == "Tangent" || sct == "Cosine")
    adjacent = prompt("What is the adjacent side")

I would use an array for the options, and a case statement below:

var opposite = 1
var adjacent = 1
var hypotenuse = 1
var sct = "SohCahToa"
var options = ["Sine", "Cosine", "Tangent"];
while (options.indexOf(sct) < 0) {
  sct = prompt("Sine (unknown adjacent) / Cosine (unkown opposite side) / Tangent (unknown hypotenuse)");
  sct = options[options.indexOf(sct)];
  if (options.indexOf(sct) < 0) {
    alert("Spelling error, please try again");
  }
}
switch (sct) {
  case "Sine":
    hypotenuse = prompt("What is the hypotenuse")
    opposite = prompt("What is the opposite side")
    break;
  case "Cosine":
    hypotenuse = prompt("What is the hypotenuse")
    adjacent = prompt("What is the adjacent side")
    break;
  default:
    opposite = prompt("What is the opposite side")
    adjacent = prompt("What is the adjacent side")
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!