2017-03-17 33 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 + '.');