Палиндромное упражнение возвращает истину, даже если массив не является палиндромом?

Вот почему динамически созданные элементы не реагируют на клики & nbsp;:

var body = $("body");
var btns = $("button");
var btnB = $("<button>B</button>");
// `<button>B</button>` is not yet in the document.
// Thus, `$("button")` gives `[<button>A</button>]`.
// Only `<button>A</button>` gets a click listener.
btns.on("click", function () {
  console.log(this);
});
// Too late for `<button>B</button>`...
body.append(btnB);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button>A</button>

В качестве обходного пути вы должны прослушивать все клики и проверять исходный элемент & nbsp;:

var body = $("body");
var btnB = $("<button>B</button>");
var btnC = $("<button>C</button>");
// Listen to all clicks and
// check if the source element
// is a `<button></button>`.
body.on("click", function (ev) {
  if ($(ev.target).is("button")) {
    console.log(ev.target);
  }
});
// Now you can add any number
// of `<button></button>`.
body.append(btnB);
body.append(btnC);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button>A</button>

Это называется «Event Delegation». Хорошие новости, это встроенная функция в jQuery: -)

var i = 11;
var body = $("body");
body.on("click", "button", function () {
  var letter = (i++).toString(36).toUpperCase();
  body.append($("<button>" + letter + "</button>"));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button>A</button>

-2
задан L. Khanna 28 March 2019 в 03:02
поделиться

3 ответа

Вам просто нужно break в вашем else, в противном случае на следующей итерации response снова станет true:

else {
    response = false;
    break;
}
0
ответ дан Kartik 28 March 2019 в 03:02
поделиться

Мы можем сказать, что даже если одна проверка на равенство не пройдена, массив не является палиндромом.
Поэтому вам нужно разрывать цикл только тогда и там.

char a1[] = {'R', 'A', 'D', 'A', 'K'};
boolean response = true;
for (int i = 0; i < a1.length / 2; i++)
{
  if (a1[i] != a1[a1.length - 1 - i])
  {
    response = false;
    break;
  }
}
System.out.println(response);
0
ответ дан swayamraina 28 March 2019 в 03:02
поделиться

Гораздо проще, если вместо этого использовать вложенный цикл

char a1[] = {'R', 'A', 'D', 'A', 'K'};
    boolean isPalindrome=true;

    for (int i = 0; i < a1.length-1; i++) {
        for (int j = a1.length-1; j >=0; j--) {

            if(a1[i]==a1[j])
                isPalindrome=true;
            else
                isPalindrome=false;

        }
    }
    System.out.println(isPalindrome);
0
ответ дан Mike Williams 28 March 2019 в 03:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: