提示数组和计数器

时间:2014-06-23 00:45:08

标签: javascript html

大家好,我需要帮助我的网页脚本作业: 功能:计数器 参数:一个数组数组。 返回:数组中的负数,零数和正数 注意:您必须在函数中使用switch语句。 这就是我到目前为止所拥有的

 <!DOCTYPE html>
 <head>
<title>Exercise 4.11</title>
</head>
<body>
<script>
    var num = new Array();
         num[0] = parseInt(prompt("Please enter a number",""),10);
         num[1] = parseInt(prompt("Please enter a number",""),10);
         num[2] = parseInt(prompt("Please enter a number",""),10);
         num[3] = parseInt(prompt("Please enter a number",""),10);
         num[4] = parseInt(prompt("Please enter a number",""),10);

counter(num);

function counter(num) {

    var i,
      count = {
        negative: 0,
        zero: 0,
        positive: 0,
    };

for(i = 0; i < num.length; i++) {
      switch (true) {
        case (num[i] < 0):
            count.negative++;
            break;

        case (num[i] === 0):
            count.zero++;
            break;

        case (num[i] > 0):
            count.positive++;
            break;

    }

}
document.write(count);
};
</script>
  </body>
</html>

3 个答案:

答案 0 :(得分:2)

这有几个问题,但由于你没有真正提出问题,我会随机解决这些问题。

  • 您为处理数组的任务创建了一个名为counter的方法,但您还没有调用它
  • 您已经通过先致电document.write退出该方法后尝试return
  • 您的prompts将返回字符串,需要使用parseInt
  • 将其解析为数字

快速推动正确的方向:

在您提示输入数字后调用counter方法,并更改方法声明中的语法,以便在定义之前调用它:

var num = new Array();

num[0] = prompt("Please enter a number","");
num[1] = prompt("Please enter a number","");
num[2] = prompt("Please enter a number","");
num[3] = prompt("Please enter a number","");
num[4] = prompt("Please enter a number","");

counter(num);

function counter(num){

  // your logic

}

<强>更新

在您的方法结束时,您将要打印结果。正如您所发现的,JavaScript正试图通过将其转换为字符串来描述您要求打印的对象。它最终给你的字符串是非常不合适的。更好的是在count对象中打印每个单独的键:

document.write(count.negative);
document.write(count.zero);
document.write(count.positive);

我还会考虑使用document.write之外的其他内容,但原因超出了这个问题的范围。

答案 1 :(得分:0)

我猜你的问题是你的计数器对象的zero属性总是0,因为prompt函数返回string而不是{{1} 1}}。如果要比较的两个对象完全相同,number运算符仅返回===,而true<运算符则更灵活。您应该对>返回的值调用parseInt,或更改prompt语句。以下是两个选项的示例:

选项1:ParseInt

case

选项2:案例陈述

num[0] = parseInt(prompt("Please enter a number",""), 10);

这是您可以采取的两种不同方法。不要把它们结合起来。

答案 2 :(得分:0)

希望我没有迟到。这是我的2c:

<强> jsBin demo

var count = {negative:0, zero:0, positive:0},
    i = 0 ;

(function ask(){
    var n = parseInt( prompt("Please enter a number",""), 10 );
    switch (true) {
      case (n<0):
        count.negative++;
        break;
      case (n===0):
        count.zero++;
        break;
      case (n>0):
        count.positive++;
        break;
      default: 
        alert( "Please use only Numbers!" );
        ask(); // Something went wrong... Ask again!
    }
    i++;
  if(i<5) ask();  // ASK 5 times

}()); // Start asking 

document.body.innerHTML = JSON.stringify(count, null, 4) ;

如果您没有使用数字,上面会立即提醒您,并重复此过程!
此外,还需要parseInt(10是基数参数。)以确保从提示的字符串结果中获取数字。