これは最初の投稿であり、私はコーディングに新しいので、うまくいけば問題は十分です。関数が2回呼び出されました - 正しい値で1回、間違った値で1回
私は基本的なJavaScriptの練習をしています。このプログラムは、1つの問題を除いて、私が必要としているように主に働いています。
プログラムは一連のアラートを入力します。たとえば、数学を選択し、次の3つのアラートに1、+、1と入力すると、「あなたの答えは2」(正しい)と返されます。しかしその後、それはその後、「あああ!問題!! 'がありますが、これは正しくありません。
これはなぜ起こっているのですか?
以下の関連コードを貼り付けました。また、コードはすべてhttps://jsfiddle.net/poc4kzm9/です。
//////////////// MATHS CALCULATOR //////////////////////////
// logic for maths calculation
function mathCalculate(operator, firstNumber, secondNumber) {
console.log(operator);
if (operator === '+') {
add(firstNumber, secondNumber);
} else if (operator === '-') {
subtract(firstNumber, secondNumber);
} else if (operator === '/') {
divide(firstNumber, secondNumber);
} else if (operator === '*') {
multiply(firstNumber, secondNumber);
} else if (operator === 'sq') {
power(firstNumber, secondNumber);
} else if (operator ==='sqrt') {
squareRoot(firstNumber);
} else {
alert('Uh oh! Problem!!');
}
}
// collect required values for math
function mathSetup() {
// Set intial values for math calculator
const firstNumber = prompt('What is your first number?');
const operator = prompt('Which operator would you like to use? (+, -, /, *, sq, sqrt)');
let secondNumber;
// No need for a second number if sqrt-ing the first value
if (operator !== 'sqrt') {
secondNumber = prompt('What is your second number?');
}
mathCalculate(operator, firstNumber, secondNumber);
}
// The various functions by operator, one for each operator
function add(a,b) {
alert('Answer is ' + (parseFloat(a) + parseFloat(b)));
}
助けてください。
問題の原因となるコードの一部はあなたの質問に含まれていません。 'mathSet()'の直後に、実行ループ内でパラメータなしで 'mathCalculate()'を呼び出すべきではありません。 'mathSetup()'は後でそれを適切に呼び出します。 https://jsfiddle.net/poc4kzm9/2/ – DarthJDG
素晴らしい、ありがとう!それは理にかなっている。 –