【JAVASCRIPT】邏輯閘與真值表
2020-12-15 JAVASCRIPT
我已經為此工作了一段時間,但我不知道為什麼它不能正常工作。似乎無論我在輸入框中輸入的值是多少,當它不是根據真實或錯誤的值更改時,它都具有相同的值。它應遵循具有AND,OR和XOR語句的真值表規則。我尚未完成任何XOR程式碼,因為我想先解決此問題。有什麼想法為什麼無論如何都會給我相同的輸出?
var binary = document.getElementById("binary").value;
var binarytwo = document.getElementById("binarytwo").value;
function truefalse(){
if (binary == 1 && binarytwo == 1){
document.getElementById("and").innerHTML = "1 or TRUE"
}else{
document.getElementById("and").innerHTML = "0 or FALSE"
}
if (binary == 1 || binarytwo == 1){
document.getElementById("or").innerHTML = "1 or TRUE"
}else if (binary == 1 || binarytwo == 0){
document.getElementById("or").innerHTML = "1 or TRUE"
}else if (binary == 0 || binarytwo == 1){
document.getElementById("or").innerHTML = "1 or TRUE"
}else{
document.getElementById("or").innerHTML = "0 or FALSE"
}
} <!DOCTYPE html>
<html>
<head>
<h1>Logic Gates</h1>
<br>
</head>
<body>
<h1>Write two Binary Values</h1>
<br>
<input id = "binary">Type a 0 or 1 here
<br>
<input id = "binarytwo">Type a 0 or 1 here
<br>
<button onclick = "truefalse()">"Click Here to get the Statements"</button>
<p id="or">OR Statement</p>
<p id="and">AND Statement</p>
<p id="xor">XOR Statement</p>
</body>
</html> 解決辦法
除了正確觀察到您僅使用初始輸入外,您的邏輯也不正確。
如所寫,“OR”欄位將始終為“1或TRUE”。
記住,使用javascript OR,這兩個管道是:||
如果返回true,則只會檢查第一部分。
您的程式碼:
if (binary == 1 || binarytwo == 1){
document.getElementById("or").innerHTML = "1 or TRUE"
}else if (binary == 1 || binarytwo == 0){
document.getElementById("or").innerHTML = "1 or TRUE"
}else if (binary == 0 || binarytwo == 1){
document.getElementById("or").innerHTML = "1 or TRUE"
}
看看這裡發生了什麼。假設二進位制等於1:
if (binary == 1 || binarytwo == 1) {為true,因為binary == 1和其餘的被跳過。因此else if (binary == 1 || binarytwo == 0){將永遠不會執行。如果binary = 0,則前三個將永遠不會執行,並且只會檢查
}else if (binary == 0 || binarytwo == 1){。這將始終成功,觸發時sicne二進位制始終為0。檢查binarytwo == 1永遠不會發生,因為||已經為binary == 0成功因此,您更多地在尋找這樣的邏輯:
if (binary == 1 && binarytwo == 1) console.log('both are TRUE: AND');
else if (binary == 1 || binarytwo == 1) console.log('one is true: OR');
else console.log('both are FALSE');
如果兩個都為假時也要說“AND”,則可以將最後一個
else摺疊成第一個:if ( (binary == 1 && binarytwo == 1) || (binary == 0 && binarytwo == 0) ) console.log('AND');
else console.log('OR');