2017-03-17 34 views
0

我使用回显打印来显示用户输入的等级。如果输入的数字不在0-100之间,则会向用户显示“您输入的号码无效”。 我想计算用户输入的70-90范围内有多少个等级。如何计算用户输入的等级数在70-90的范围内?

if((input) || input == "" || input < 70|| input > 90) 
      { 
      range = range + 1; 
      } 

我有这样的语句来计算是70-90之间

document.writeln("<h1 style= \"color: magenta\"> The number of valid grades entered is " + counter + ".<br />The number of grades entered that are between 70-90 are: " + range + ".</h1>"); 

这是显示它的代码级别的数字。 但它并不总是正确的。我应该在哪里放置if语句或者我应该改变它?

+0

你'if'条件将是真正的* *任何字符串。 '||'的意思是“或”。 – nnnnnn

回答

0

如果你想检查一个数字是范围的最小值和最大值之间,你可能会想验证它比分钟(input > 70)和(&&)超出了最大下( input < 90):

var grades = [28, 39, 42, 56, 63, 71, 76, 80, 92, 99, 100]; 
 
var min = 70; 
 
var max = 90; 
 

 
var inRange = grades.filter(function(input) { 
 
    return input > min && input < max; 
 
}).length; 
 
console.log(inRange + ' of the ' + grades.length + ' are in between ' + min + ' and ' + max + '.');

+0

我按照你所说的做了,但它仍然不起作用。我输入了88,78,67和234它说:“输入的等级数在70-90 = 0之间 –

+0

@EmirCelik我已经添加了一个工作示例 –

+0

这是我的错,我把if语句写错了我把你在第一条评论中所写的陈述放在正确的位置,现在它已经完美地工作了,谢谢。 –

0

更好地利用Array#reduce代替生成滤波结果和得到的它的长度。

本提案假设给定的值是包含性的,如min <= x <= max

var grades = [28, 39, 42, 56, 63, 71, 76, 80, 92, 99, 100], 
 
    min = 70, 
 
    max = 90, 
 
    inRange = grades.reduce(function(count, input) { 
 
     return count + (input >= min && input <= max); 
 
    }, 0); 
 

 
console.log(inRange + ' of the ' + grades.length + ' are in between ' + min + ' and ' + max + '.');