我如何排名第一

时间:2017-08-20 23:19:45

标签: javascript loops if-statement

  

我真的需要帮助解决这个小问题,我必须按照最高分对第一人进行排名。

     //variables where the total value will go for each person  
            var musT = 0;
            var zikT = 0;
            var hamT = 0;

     // if the spacebar is pressed
     document.body.onkeyup = function(e){
        if(e.keyCode == 32){

          //generate random integers between 1 and 12
            var person_0 = Math.floor(Math.random() * 12 + 1);      
            var person_1= Math.floor(Math.random() * 12 + 1);      
            var person_2 = Math.floor(Math.random() * 12 + 1);  

            // add total number of pushups
            musT += person_0;
            zikT += person_1;
            hamT += person_2;

            //displaying the total pushups
            $("#musT .box").html(musT);
            $("#zikT .box").html(zikT);
            $("#hamT .box").html(hamT);

            }
  

我想以更好的方式排名最高的数字

            //ranking the top person

            if(musT > zikT && hamT){
                $("#first").html("Musa: " + musT );
            } if(zikT > musT && hamT){
                $("#first").html("Zikria: " + zikT );

            } if(hamT > musT && zikT){
               $("#first").html("Hamza: " + hamT ); 

     }
 }

4 个答案:

答案 0 :(得分:0)

这不会像你写的那样起作用

if(musT > zikT && hamT){
   $("#first").html("Musa: " + musT );
} if(zikT > musT && hamT){
   $("#first").html("Zikria: " + zikT );
} if(hamT > musT && zikT){
   $("#first").html("Hamza: " + hamT ); 

像这样写:

if(musT > zikT && musT > hamT){
   $("#first").html("Musa: " + musT );
} else if(zikT > musT &&  zikT > hamT){
   $("#first").html("Zikria: " + zikT );
} else if(hamT > musT && hamT > zikT){
   $("#first").html("Hamza: " + hamT ); 

这也是一种不好的方法。而不是使用if else条件尝试将其存储在数组中并从该数组中获取最大值。

答案 1 :(得分:0)

在javascript中,您只能比较两个值a > b。如果您想要比较多个值,则应该像a > b && a > c那样进行比较。此外,如果你想使用复杂的if语句,你应该像

那样
if(statement){
    //something
} else if (other thing..){
    // and so
} else if (statement3){
    // and so
} else {
    // this is the last case
}

你可以拥有if-else语句所需的数量。

答案 2 :(得分:0)

你真是太近了!唯一的问题是您的if条件。根据您的逻辑musT > zikT && hamT,您实际上只是检查must是否大于zikT,而hamT只是存在

那是因为&&(AND)认为其中任何一方的所有内容都是单独的条件。您的上述代码将等同于(musT > zikT) && (hamT)括号。

记住这一点,如果您自己手动添加括号,通常会更容易理解,如下面的工作示例所示。使用 else if 语句也很重要,这样您就不会意外触发多个条件。

不要忘记,所有数字相同也是可能的。您还需要else条件来涵盖这种可能的结果。

var person_1 = Math.floor(Math.random() * 12 + 1);
var person_2 = Math.floor(Math.random() * 12 + 1);
var person_3 = Math.floor(Math.random() * 12 + 1);

if ((person_1 > person_2) && (person_1 > person_3)) {
  console.log("Person 1 is highest");
}
else if ((person_2 > person_1) && (person_2 > person_1)) {
  console.log("Person 2 is highest");
}
else if ((person_3 > person_1) && (person_3 > person_2)) {
  console.log("Person 3 is highest");
}
else {
  console.log("They're all the same!");
}

希望这有帮助! :)

答案 3 :(得分:0)

你可以使用sort和你声明为对象的初始变量来帮助你。

// your global variables modified to be an array of objects

  var people = [
    {name: "Musa", count: 0}, 
    {name: "Zikria", count: 0}, 
    {name: "Hamza", count: 0}
]

// after you are done counting, sort the object

var sortedPeople = people.sort((a, b) => b.count > a.count))

// then just take the top person and append them in your div, no checks 

$("#first").html(`${sortedPeople[0].name}: ${sortedPeople[0].count}`)


 }

请确保修改计数器以考虑此新结构。