JavaScript(for/while)

标签 javascript for-loop while-loop

结果我应该得到一个螺旋矩阵,但它不起作用。问题出在第三个或第四个 for 的某个地方。来自while

for循环不起作用。我认为,从逻辑上讲,问题已经解决了,我只是有一个语法问题,但我找不到它。


例如,矩阵应如下所示: n=3 n=5<br/> 1 2 3 1 2 3 4 5 8 9 4 16 17 18 19 6 7 6 5 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9

n = parseInt(prompt('N:', '5'));
A = new Array();
for (i = 0; i < n; i++) {
  A[i] = new Array();
  for (j = 0; j < n; j++) A[i][j] = 0;
}
DIM = parseInt(n * n);
//A[i][j]=1; 
//==========================
document.write("<br>Matrix: <table border='2'>".fontcolor('red'));
for (i = 0; i < n; i++) {
  document.write("<tr>");
  for (j = 0; j < n; j++) {
    document.write("<td >" + A[i][j] + " ");
  }
  document.write("<br>");
}
document.write("</table>");
document.write("========================================== <br>");

//===========================
k = 1;
nr = 1;
f = true;
while (f) {
  i = k - 1;
  for (j = k - 1; j <= n - k; j++) {
    if (nr <= DIM) {
      A[i][j] = nr;
      nr++;
      document.write(A[i][j] + ' ');
    } else {
      f = false;
    };
  };
  document.write('<br>');
  for (i = k; i <= n - k; i++) {
    if (nr <= DIM) {
      A[i][j] = nr;
      nr++;
      document.write(A[i][j] + ' ');
    } else {
      f = false;
    };
  };
  document.write('<br>');
  for (j = (n - k - 1); j >= (k - 1); j--) {
    if (nr <= DIM) {
      A[i][j] = nr;
      nr++;
      document.write(A[i][j] + ' ');
    } else {
      f = false;
    };
  };
  document.write('<br>');
  for (i = (n - k - 1); i >= k; i--) {
    if (nr <= DIM) {
      A[i][j] = nr;
      nr++;
      document.write(A[i][j] + ' ');
    } else {
      f = false;
    };
  };
  document.write('<br>');
  k++;
};
//=====================================
document.write("<br>Matrix: <table border='2'>".fontcolor('red'));
for (i = 0; i < n; i++) {
  document.write("<tr>");
  for (j = 0; j < n; j++) {
    document.write("<td >" + A[i][j] + " ");
  }
  document.write("<br>");
}
document.write("</table>");
document.write("========================================== <br>");

最佳答案

这不是语法错误。它在 A[i][j] = nr; 上崩溃在 for (j = (n - k - 1); j >= (k - 1); j--) {当您尝试设置 A[5][3] = 10; 时 for 循环因为A[5]未定义。

这应该可以解决你眼前的问题,尽管我怀疑这有多大帮助......这是一个相当棘手的编程问题。螺旋看起来很简单,但实际上很难。我强烈建议您采纳 Quince 的建议并改进您的变量名称。尝试让这段代码运行会让任何人都头疼。

关于JavaScript(for/while),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49270896/

相关文章:

javascript - 使用 Google Language API 进行批量翻译

javascript - for循环中的时间比较

loops - Racket 中的 While 循环

c++ - While 循环走得太远了

javascript - Vuejs 3 webpack : Problem with vue-template-compiler

javascript - 使用工具提示在丰富的散点图上绘制 75000 个点

javascript - 选择 "Open link in new tab"和 "Open link in new windw"后调用Javascript函数

javascript - 来自其他组件的 Angular 5 输入数组,导致长度为 0

c++ - 一次执行后嵌套 for 循环中出现意外/看不见的中断 : Gaussian elimination

java - While 循环编译器错误