Dies ist ein erster Beitrag und auch ich bin neu im Codieren, also ist die Frage hoffentlich klar genug.Funktion wird zweimal aufgerufen - einmal mit korrektem Wert, einmal mit falschem Wert
Ich mache eine grundlegende JavaScript-Übung. Das Programm arbeitet weitgehend so, wie ich es brauche, um ein Problem zu lösen.
Das Programm füllt eine Reihe von Alarmen auf. Wenn Sie beispielsweise Mathematik auswählen und dann in den nächsten drei Warnungen 1, +, 1 eingeben, wird "Ihre Antwort ist 2" zurückgegeben (was korrekt ist). Dann aber zeigt es später das "Uh oh! Problem !! ", was nicht stimmt.
Ich kann nicht herausfinden, warum das passiert?
Ich habe den entsprechenden Code unten eingefügt. Auch eine https://jsfiddle.net/poc4kzm9/ mit dem ganzen Code ist hier.
//////////////// 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)));
}
Jede Hilfe wäre willkommen.
Das Bit des Codes, das das Problem verursacht, ist nicht in Ihrer Frage enthalten. Sie sollten 'mathCalculate()' nicht ohne Parameter in Ihrer Laufschleife aufrufen, direkt nach 'mathSetup()'. 'mathSetup()' ruft es später richtig auf. https://jsfiddle.net/poc4kzm9/2/ – DarthJDG
Erstaunlich, danke! Das macht Sinn. –