2017-09-08 3 views
1

JavaScriptを初めて使用しています。私の課題の1つとして、クラスにJavaScriptコードを書く必要があります。これは、ユーザーが入力した収入に対して税額を決定して表示します。これまでのところ私のコードは次のようになります。計算がうまく動作JavaScriptで1未満で数字以外の数字をチェックするにはどうすればいいですか?

<!DOCTYPE html> 
<html> 
    <head> 
     <title>JavaScript Tax Assignment</title> 
    </head> 
    <body> 
     <script> 
      //declare variables and collect amount enter. 
      // Assign amount entered to var amountEntered. 
     var amountEntered = window.prompt("Enter an income amount in dollars"); 
     var x = parseInt(amountEntered); 
     var untaxableIncome = 12000; 
     var taxBracketOne = 36000; 
     var taxBracketTwo = 90000; 
     var bracketOneTax = 0.15; 
     var bracketTwoTax = 0.25; 
     var total; 

     //determine if the number is less than one 
     if (x < 1) 
      { 
       alert("Enter a whole number greater than 0"); 
      } 
     // 
     else if (x == NaN) 
      { 
       alert("Enter a whole number greater than 0"); 
      } 

     else if (x <= untaxableIncome) 
      { 
       alert("You will not be charged taxes on your income"); 
      } 

     else if (x >untaxableIncome && x <= taxBracketOne) 
      { 
       total = amountEntered * bracketOneTax; 
       document.write("You will need to pay " + total + " on your " + amountEntered + " income.") 
      } 
     else if (x > taxBracketOne && x <= taxBracketTwo) 
      { 
       total = amountEntered * bracketTwoTax; 
       document.write("You will need to pay " + total + " on your " + amountEntered + " income.") 
      } 
     else (x > taxBracketTwo) 
      { 
       document.write("I do not have the data to calculate the tax on this income.") 
      } 
    </script> 
    </body> 
</html> 

、私がいる唯一の問題は、私は0.5または文字を入力したときに、私はアラートが( "整数を入力し得ないということです0より大きい)。私は間違って何をしていますか?

+0

を配置する必要があり

else if (x == NaN) 

このラインではそうhttps://www.w3schools.com/jsref/jsref_isnan.asp

ISNAN機能を使用することができ、どのように私は、プロンプトボックスを作るのですが、ユーザ場合は、再度表示されます1未満の文字または値を入力しましたか? – nponinski

+0

あなたはParseIntを使用しています。文字または小数値を認識しません。 1より小さい文字または値(.5のように)は0になります。これは0より小さくありません。 –

+3

私は一貫性のために 'parseInt(x)'の代わりに 'Math.floor(Number(x))'を小数点以下を切り捨てる方が好きです。また、JavaScriptでは '=='や '=== 'から' NaN'への値はありません。 'NaN'自体も含まれています。この目的のために、組み込み関数isNaN()があります。 – mhodges

答えて

0

parseInt()を使用していますが、これは端数ではなく整数だけを解析することができます。 .5と入力すると、NaNが返されます。

しかし、これはif (x == NaN)でテストできません。 NaNは特別な数字であり、決してそれ自体ではない。 if (isNaN(x))を使用する必要があります。

数字が0と1の間の小数であるかどうかを知りたい場合は、parseInt()の代わりにparseFloat()を使用する必要があります。そして、あなたは数が整数であるかどうかを伝えたい場合は、あなたが行うことができます:

if (x == Math.floor(x)) 

Math.floor()は、小数点以下の端数があるかもしれません数をとり、以下それに等しい最大の整数を返します。数値がすでに整数である場合、これらは明らかに同じです。

+0

これはすごく助けになりました!もう1つの質問ですが、間違ったデータが入力された後、プロンプトボックスが表示され続けるのはどうですか?しかし、これは間違ったデータが入力された後に一度だけプロンプトを表示します。毎回ではありません。 – nponinski

+0

'while()'ループを使用して、入力が条件を満たしているときにそれを中断します。 – Barmar

0

あなたが使用する必要がチェックとしてはNaNを使用する場合:

isNAN(x) 

私はこのようにそれを記述します。

if(typeof x !== "number" || x > 1) { 
    alert("Enter a whole number greater than 0"); 
} 

MDNは、初心者のための素晴らしいリソースです

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isNaN

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof

0

あなたはまた

​​
関連する問題