У меня есть полная рабочая программа, но я очень смущен логикой в нескольких моих условных заявлениях после того, как я возился с ними, пытаясь заставить программу делать то, что я хочу.Javascript Logical Operator Confusion
while (col < 5 || 20 < col || Number.isInteger(col)) {
col = prompt("Columns (Int between 5 and 20): ","10");
console.log("col " + col);
}
while (row < 5 || 20 < row || Number.isInteger(row)) {
row = prompt("Rows (Int between 5 and 20): ","10");
console.log("row " + row);
}
if (row>col) {size = 400/col;console.log("colmore");}
else if (col>row) {size = 400/row;console.log("rowmore");}
else {size = 400/col;console.log("same");}
console.log("size " + size);
Теперь моя программа запрашивает количество столбцов, а затем строк. Например, я помещу 20 столбцов, а 5 для строк - столбцы, очевидно, больше, чем строки. Так это происходит:
col 20
row 5
colmore
size 20
Очевидно, что это то, что я хочу, чтобы это сделать, но я получаю повесил трубку, потому что первое условие
if (row>col)
должен означать, если строк больше, чем столбцов, и программа должна продолжить следующее заявление ... или я просто полностью теряю сознание ...?
'prompt' возвращает строки, а _string_' "20" 'действительно меньше, чем _string_' "5" '; добавьте целые числа 'row' и' col' к целым числам – Hamms
. Обратите внимание, что это отличный пример того, почему отладка с помощью 'console.log' может привести к гораздо большей путанице, чем отладка с [фактическим отладчиком] (https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/debugger) – Hamms
Если вы получили строку и столбец из ввода строки, то вы выполняете stringA> stringB, используйте parseInt() для обработки как целые числа. Такое поведение может отличаться для более ранних операторов if, поскольку строки были принудительно привязаны к целым числам. – awiebe