Проблема с моим & ldquo; if & rdquo; оператор в функции

Вы столкнулись с запутанной иерархией типов PreparedStatement extends Statement:

PreparedStatement имеет те же execute*(String) методы, что и Statement, но они не должны использоваться, просто используйте без параметров execute*() методов PreparedStatement --- вы уже дали фактическую строку запроса для выполнения с помощью conn.prepareStatement().

-1
задан m.sharifit88 18 March 2019 в 12:28
поделиться

2 ответа

Причина этого в том, что NaN - это number:

>> typeof(NaN)
<- "number"

, поэтому вы должны проверить это тоже:

if (typeof(dataSin) != 'number' || isNaN(dataSin)) {
    // not of type number, or NaN
}

, и вы должны выполнить свой анализ перед проверкой типа. prompt всегда возвращает строку.

0
ответ дан Bart Friederichs 18 March 2019 в 12:28
поделиться

Самый простой способ исправить это - преобразовать в число с плавающей точкой уже в первой строке, а затем, если ввод не является числом, вернет NaN, case не будет работать нормально. И см .:

NaN === NaN; // Returns false
isNaN(NaN); // Returns true

Другая проблема в том, что подсказка всегда возвращает строку или null, насколько я знаю. Поэтому приведенный ниже код должен исправить вашу проблему:

function addD() {
  var dataSin = parseFloat(prompt("What number do you want to add?"));
  if(isNaN(dataSin)) {
    document.getElementById("targetD").innerHTML = dataSin + " is not a number";
  } else {
    dataArr[dataArr.length] = dataSin;
    document.getElementById("targetD").innerHTML = dataArr;
  }
}
0
ответ дан Esdras Xavier 18 March 2019 в 12:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: