Javascript If-else/开关组合

Javascript If-else/开关组合,javascript,Javascript,我不知道是否,else/切换得那么好,我不知道你是否可以将它们结合起来,我不确定是这样还是我只是做错了刹车,但我花了几个小时找到了问题,但我找不到。以下是全部代码以防万一: const Fanta = 250,Sprite = 250,Cola = 250,Dirol = 450,Snickers = 300,Lays = 800; var a = prompt("1:Fanta = 250, 2:Sprite = 250, 3:Coca Cola = 250, 4:Dirol = 450, 5

我不知道是否,else/切换得那么好,我不知道你是否可以将它们结合起来,我不确定是这样还是我只是做错了刹车,但我花了几个小时找到了问题,但我找不到。以下是全部代码以防万一:

const Fanta = 250,Sprite = 250,Cola = 250,Dirol = 450,Snickers = 300,Lays = 800;
var a = prompt("1:Fanta = 250, 2:Sprite = 250, 3:Coca Cola = 250, 4:Dirol = 450, 5:Snickers = 300, 6:Lays = 800");
function math()
{
    switch(a)
    {
        case 1:
alert("You chose Fanta");
var money = prompt("Put money in");
alert("You put in " + money)
if(money >= 250)
{
    alert("You just purchased a Fanta! Take back " + (money - Fanta));
}
default:
{
alert("Error! You didn't put in enough money")
}
}
    switch(a)
    {
        case 2:
alert("You chose Sprite");
var money = prompt("Put money in");
alert("You put in " + money)
if(money >= 250)
{
    alert("You just purchased a Sprite! Take back " + (money - Sprite));
}
else
{
alert("Error! You didn't put in enough money")
}
}
    switch(a)
    {
        case 3:
alert("You chose Cola");
var money = prompt("Put money in");
alert("You put in " + money)
if(money >= 250)
{
    alert("You just purchased a Coca Cola! Take back " + (money - Cola));
}
else
{
alert("Error! You didn't put in enough money")
}
}
    switch(a)
    {
        case 4:
alert("You chose Dirol");
var money = prompt("Put money in");
alert("You put in " + money)
if(money >= 450)
{
    alert("You just purchased a Dirol! Take back " + (money - Dirol));
}
else
{
alert("Error! You didn't put in enough money")
}
}
    switch(a)
    {
        case 5:
alert("You chose Snickers");
var money = prompt("Put money in");
alert("You put in " + money);
if(money >= 300)
{
    alert("You just purchased a Snickers! Take back " + (money - Snickers));
}
else
{
alert("Error! You didn't put in enough money")
}
}
    switch(a)
    {
        case 6:
alert("You chose Lays");
var money = prompt("Put money in");
alert("You put in " + money)
if(money >= 800)
{
    alert("You just purchased a Sprite! Take back " + (money - Lays));
}
else
{
alert("Error! You didn't put in enough money")
}
}
}
math();

你写的东西

switch(a) {
// switch block
}
switch(a) {
// another switch block
}
// and so on
依我拙见,你需要把所有的开关块合并在一个块中。不要忘了在你的
案例中加入
break
块 因此,您的代码将如下所示:

switch(a) {
    case x: 
        // case block 1
        break;

    case y: 
        // case block 2
        break;
// other cases
    default:
        // if no one case is matched
}

为了写入大量案例,您不需要多次写入开关(a)。您需要做的唯一一件事是在single switch()中写入所有案例,并添加break在那个案例的结尾

编写代码的正确方法是:

const Fanta = 250,Sprite = 250,Cola = 250,Dirol = 450,Snickers = 300,Lays = 800;
var a = prompt("1:Fanta = 250, 2:Sprite = 250, 3:Coca Cola = 250, 4:Dirol = 450, 5:Snickers = 300, 6:Lays = 800");
function math()
{
    switch(a)
    {
        case 1:
            alert("You chose Fanta");
            var money = prompt("Put money in");
            alert("You put in " + money)
            if(money >= 250)
            {
                alert("You just purchased a Fanta! Take back " + (money - Fanta));
            }
            break;
        default:
            {
                alert("Error! You didn't put in enough money")
            }
            break;
        case 2:
            alert("You chose Sprite");
            var money = prompt("Put money in");
            alert("You put in " + money)
            if(money >= 250)
            {
                alert("You just purchased a Sprite! Take back " + (money - Sprite));
            }
            else
            {
                alert("Error! You didn't put in enough money")
            }
            break;
        case 3:
            alert("You chose Cola");
            var money = prompt("Put money in");
            alert("You put in " + money)
            if(money >= 250)
            {
                alert("You just purchased a Coca Cola! Take back " + (money - Cola));
            }
            else
            {
            alert("Error! You didn't put in enough money")
            }
            break;
        case 4:
            alert("You chose Dirol");
            var money = prompt("Put money in");
            alert("You put in " + money)
            if(money >= 450)
            {
                alert("You just purchased a Dirol! Take back " + (money - Dirol));
            }
            else
            {
            alert("Error! You didn't put in enough money")
            }
        break;
        case 5:
            alert("You chose Snickers");
            var money = prompt("Put money in");
            alert("You put in " + money);
            if(money >= 300)
            {
                alert("You just purchased a Snickers! Take back " + (money - Snickers));
            }
            else
            {
            alert("Error! You didn't put in enough money")
            }
            break;
        case 6:
            alert("You chose Lays");
            var money = prompt("Put money in");
            alert("You put in " + money)
            if(money >= 800)
            {
                alert("You just purchased a Sprite! Take back " + (money - Lays));
            }
            else
            {
            alert("Error! You didn't put in enough money")
            }
            break;
    }
}
math();

你应该更好地优化你的代码。。。默认值仅在开关中起作用,并且在代码中是“禁止饮酒”选项。答案是你可以这样做: 我选择了

var enough_money=false; var diff=0; var drink="";
switch(a){
   case(1):
      alert(...);
      if(...){
         enough_money=true;
         diff= money-cola;
         drink= "Cola";
      }
      break;
  case(2):
      alert(...);
      if(...){
         enough_money=true;
         diff= money-cola;
         drink= "Cola";
      }
      break;
  default:
     alert("Please choose!");
}

if(enough_money){
   alert(drink+ ' rest money'+diff);
}

只使用一个switch语句,然后列出所有的情况,以默认情况结束。根据我几年前读到的内容,switch语句在汇编代码中使用了所谓的“向量跳转”。它使用1个命令。但是,if/else if/else if/else if/else语句的列表使用更多的CPU命令。因此,开关比if/else语句栈更快。尽管现代CPU的时钟频率为3-4 GHz*4+核,但这在今天还是一个没有意义的问题。开关可能更容易阅读,但代码应该适当缩进,以确定是否有任何缺少的大括号或它们是否没有正确对齐。顺便说一句:这些是大括号{}。这些是括号:[]。我尝试了所有答案,没有一个有效,最近的一个是@fucedebads,但是当我输入1时,它说你没有投入足够的钱,当我试图选择一个drinkRichard时,如果你能正确格式化你的代码(缩进)并说明代码如何不起作用,这将非常有帮助(你得到了什么结果,你期望得到什么结果)。如果你发布了一个问题,然后注意到它需要进一步的工作,下面有一个链接你可以使用。
var enough_money=false; var diff=0; var drink="";
switch(a){
   case(1):
      alert(...);
      if(...){
         enough_money=true;
         diff= money-cola;
         drink= "Cola";
      }
      break;
  case(2):
      alert(...);
      if(...){
         enough_money=true;
         diff= money-cola;
         drink= "Cola";
      }
      break;
  default:
     alert("Please choose!");
}

if(enough_money){
   alert(drink+ ' rest money'+diff);
}