JavaScript if "x = (a || b || c)"语句不起作用

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

本文关键字:quot 语句 不起作用 if JavaScript      更新时间:2023-09-26

我正在用javascript制作一个简单的三角函数程序,我的if和while语句不能正常工作,因为它们只有在第一个条件为真时才能通过,即如果你输入正弦它会工作,但如果你输入余弦或正切则不会。

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

谢谢(将代码保存为.html以进行测试)

你所有的多重比较看起来像这样:

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

需要改成:

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

解释一下,当您执行("Sine" || "Cosine" || "Tangent")时,计算结果仅为"Sine",因此if (sct == ("Sine" || "Cosine" || "Tangent"))if (sct == "Sine")相同,这显然不是您想要的。


以下是应用了所有更正的代码:

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")

我将使用一个数组作为选项,并在下面使用case语句:

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")
}