Вы столкнулись с запутанной иерархией типов PreparedStatement extends Statement
:
PreparedStatement
имеет те же execute*(String)
методы, что и Statement
, но они не должны использоваться, просто используйте без параметров execute*()
методов PreparedStatement
--- вы уже дали фактическую строку запроса для выполнения с помощью conn.prepareStatement()
.
Причина этого в том, что NaN
- это number
:
>> typeof(NaN)
<- "number"
, поэтому вы должны проверить это тоже:
if (typeof(dataSin) != 'number' || isNaN(dataSin)) {
// not of type number, or NaN
}
, и вы должны выполнить свой анализ перед проверкой типа. prompt
всегда возвращает строку.
Самый простой способ исправить это - преобразовать в число с плавающей точкой уже в первой строке, а затем, если ввод не является числом, вернет 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;
}
}