【问题标题】:Lottery Guess Program Counter JavaScript彩票猜猜程序计数器 JavaScript
【发布时间】:2020-12-13 18:45:35
【问题描述】:

创建了一个彩票号码猜测程序,该程序接受一个数字 1-10 并让用户猜数字,总共 3 次,以赢得“奖品”。在程序的抽奖部分,我可以得到没有问题,但无法让程序计算猜中的次数并显示正确的奖金金额。

这是我的代码:

<script>
   var randomNum1 = Math.floor((Math.random() * 9) + 1);
   var randomNum2 = Math.floor((Math.random() * 9) + 1);
   var randomNum3 = Math.floor((Math.random() * 9) + 1);
   console.log(randomNum1);
   console.log(randomNum2);
   console.log(randomNum3);
   console.log(x);
   var firstNum = false;
   var secondNum = false;
   var thirdNum = false;
   var x = 0;
   var moneyWon = 0;

   firstNum = parseInt(prompt("Guess the first number."));;
   secondNum = parseInt(prompt("Guess the second number."));;
   thirdNum = parseInt(prompt("Guess the third number."));;

   if((firstNum == randomNum1) || (firstNum == randomNum2) || (firstNum == randomNum3))
   {
       firstNum == true;
   }
       if(firstNum == true)
       {
           moneyWon = 100;
           x++;
       }
       else{
           moneyWon = 0;
       }

   if((secondNum == randomNum2) || (secondNum == randomNum1) || (secondNum == randomNum3))
   {
       secondNum == true;
   }
       if(secondNum == true)
       {
           moneyWon = 200;
           x++;
       }
       else{
           moneyWon = 100;
       }
   if((thirdNum == randomNum2) || (thirdNum == randomNum1) || (thirdNum == randomNum3))
   {
       thirdNum == true;
   }
       if(thirdNum == true)
       {
           moneyWon = 500;
           x++;
       }
       else{
           moneyWon = 200;
       }



        
   alert("The computer's numbers are " + randomNum1 + " " + randomNum2 + " " + randomNum3 +
   "\nYour guesses were " + firstNum + " " + secondNum + " " + thirdNum +
   "\nYou got " + console.log(x) + " right" +
   "\nYou've won $" + moneyWon);
  
</script>

【问题讨论】:

    标签: javascript


    【解决方案1】:

    我注意到的第一件事:

    You got " + console.log(x) + " right" +
    

    这里你不需要console.log(),只需要x

    第二件事,你不想每次都在ifs 中设置moneyWon,而是设置moneyWon += amount,就像你对x 所做的那样

    另外,在else(表示猜测不正确)中,您不想设置或添加金额(我建议完全删除这3个elses):

    else{ moneyWon = 0; }

    还有一件小事——给属性起有意义的名字,即 var firstNum = false 应该更像(is)firstNumberGuessedis 表示这是一个布尔值

    我看到你在这方面走在正确的轨道上,但是尽快学会不要对这些东西懒惰是件好事

    编辑:您也可以放弃将 true 分配给 firstNum、secondNum、thirdNum 并使用以下代码:

    if((firstNum == randomNum1) || (firstNum == randomNum2) || (firstNum == randomNum3))
    
           {
               moneyWon += 100;
               x++;
           }
    

    【讨论】:

    • 最后,我猜你不知道或者对数组不太有经验——当你对它们有了更好的了解后,考虑使用数组重构上面的内容——我会给你一个提示——使用数组.includes 方法
    【解决方案2】:

    好吧,我不需要告诉您错误是什么以及导致错误的原因,因为我的朋友 Dejan 已经在他的回答中包含了这些错误。在我的回答中,我正在尝试实施他的回答以及一些有用的 javascript 方法,这些方法也可能使您的工作更加轻松和快捷。

    首先,数组是你的朋友。我为用户输入和随机数制作了数组,并使用 for 循环填充它们。

    接下来,当我们使用数组时,我们可以使用includes() 方法在随机数中查找值。它减少了你的 if else 条件。

    接下来,我使用字符串插值来获取输出消息。

    let randoms = [];
    let nums = [];
    let numbers = ["first", "second", "third"];
    let winPrize = [100, 200, 500];
    let losePrize = [0, 100, 200];
    
    for(let i=0; i<3; i++){
      randoms.push(Math.floor((Math.random() * 9) + 1));
      nums.push(parseInt(prompt(`Guess the ${numbers[i]} number.`)));
    }
    
    let x = 0;
    let moneyWon = 0;
    
    for(let i=0; i<3; i++){
      if(randoms.includes(nums[i])){
        x++;
        moneyWon+=winPrize[i];
      }else{
        moneyWon+=losePrize[i];
      }
    }
    
    alert(`The computer's numbers are ${randoms[0]}, ${randoms[1]} and ${randoms[2]}. \nYour guesses were ${nums[0]}, ${nums[1]} and ${nums[2]}. \nYou got ${x} right. \nYou've won $${moneyWon}`);

    我相信,如果我们遵循这样的做法,我们的代码将保持简短,并且易于阅读和维护。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多