【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');

出處

Have any Question?

Let us answer it!