对于循环计数1到10然后10到1或者,用字母连接

时间:2018-02-03 16:34:14

标签: javascript java for-loop if-statement nested-loops

如何使用嵌套的for循环编写代码,它会产生以下结果:

W,1,1
W,1,2
W,1,3
W,1,3
W,1,2
W,1,1
W,2,1
W,2,2
W,2,3
W,2,3
W,2,2
W,2,1
etc...

注意:这些数字并不总是奇数和偶数,它们可能是十进制的,但它们在这里是为了简化

我试过了,但结果不对:

var lon,lat,str ='',i = 0;

    for(lat=1; lat<=2; lat++)
    {
    if((i%2)==0){

        for(lon=1; lon<=3; lon++)
           {

            str+="W,"+lat+","+lon+"\n";
            console.log(str)
           }
               }
    else{

         for(lon=3; lon>=1; lon--)
           {

            str+="W,"+lat+","+lon+"\n";
            console.log(str)
           }
              }
                i++;   
         }

我想,我会将变量 i 作为中间函数,每次循环都是奇数或偶数增量,然后用 If ... Else I会决定何时向前或向后计算。

任何想法

请用Java或Javascript编码,thx

3 个答案:

答案 0 :(得分:1)

使用嵌套的for-loop

在第一个嵌套for-loop结束后,以反方向开始第二个。

&#13;
&#13;
let generate = (length) => {
  let artifacts = [];
  for (let i = 1; i <= length; i++) {
    let j;
    for (j = 1; j <= length; j++) {
      artifacts.push(`W,${i},${j}`);
    }

    for (--j; j > 0; j--) {
      artifacts.push(`W,${i},${j}`);
    }
  }
  
  return artifacts;
}

let array = generate(6);
console.log(array);
&#13;
.as-console-wrapper {
  max-height: 100% !important
}
&#13;
&#13;
&#13;

答案 1 :(得分:1)

如果使用中间数组存储内部循环数据,则可以使用单个嵌套循环执行此操作,然后在内部循环之后,将其连接到结果以及“反转”#34;数据

&#13;
&#13;
var precision = 5,
  tmp = [],
  res = "",

  latStart = 10.1,
  latInc = 0.1,
  latTarg = 10.8,

  lonStart = 1.1,
  lonInc = 0.2,
  lonTarg = 2.4;

for (var latI = latStart; latI <= latTarg; latI=+(latI+latInc).toFixed(precision)) {
  tmp.length = 0;
  for (var lonI = lonStart; lonI <= lonTarg; lonI=+(lonI+lonInc).toFixed(precision)) {
    tmp.push("W," + latI + "," + lonI + "\n");
  }
  res += tmp.join("") + tmp.reverse().join("");
}

console.log(res);
&#13;
&#13;
&#13;

答案 2 :(得分:0)

有时解决问题的好方法是逐步解决问题。例如,您可以创建一个计数方法,一个计数倒计时。这样做不仅可以使问题更容易解决,还可以帮助使代码更易读,更容易理解:

&#13;
&#13;
var lat = 1, long = 1, latMax = 2, c = "W";

function countLongUp(max) {
  for(; long < max; ++long) print();
  print();  
}

function countLongDown(min) {
  for(; long > min; --long) print();
  print();  
}

function print() {
  console.log(c + "," + lat + "," + long);
}

for(; lat <= latMax; ++lat) {
  countLongUp(3);
  countLongDown(1);
}
&#13;
&#13;
&#13;