Для петли, не проходящей через длину - PullRequest
0 голосов
/ 14 марта 2019

Я не могу понять, что я делаю неправильно, из-за чего цикл for не проходит через мою длину.Я пытаюсь использовать пользовательский ввод для преобразования двоичного числа в десятичное, но оно не работает.Что у меня есть

Отредактировано

var val = $("txtIn").value;
if (cT[1].checked) {
  var bVal = val;
  if (isNaN(bVal)) {
    alert(val + " is not a number. A number is required to run the program.");
  } else if ((val % 1) !== 0) {
    alert(val + " is not an integer. A whole number is required to run the program.");
  } else if (bVal < 0) {
    alert(val + " is not able to convert. Input must be positive integer.");
  } else {
    convertByArrayB(bVal);
  }
  }
  
  function convertByArrayB(bVal) {
    var r, i, j;

    for (i = 0; i < bVal.length; i++) {
      r = bVal.charAt(i);
      if (r !== '1' && r !== '0') {
        alert("You did not enter a valid binary number. Please try again!");
      }

      var nv = parseInt(r, 2);
      
    }

    $("txtOut").value = nv;

  }

Я не думаю, что вам нужна верхняя часть, но лучше, чем потом сожалеть.Спасибо заранее за любую помощь.(Люблю это сообщество Кстати)

1 Ответ

1 голос
/ 14 марта 2019

Вы изменяете bVal внутри цикла, когда делаете:

bVal = nv;

, поэтому значение bVal.length равно undefined на следующей итерации, и цикл останавливается.

Код, который вызывает parseInt(), должен быть после цикла, а не внутри него.Нет необходимости переназначать bVal, и он должен анализировать bVal, а не r[i].

function convertByArrayB(bVal) {
  var r, i, j;

  for (i = 0; i < bVal.length; i++) {
    r = bVal.charAt(i);
    if (r !== '1' && r !== '0') {
      alert("You did not enter a valid binary number. Please try again!");
      return;
    }
  }
  var nv = parseInt(bVal, 2);

  document.getElementById("txtOut").value = nv;

}

convertByArrayB("101");
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
Result: <input id="txtOut">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...