如何使用嵌套的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
答案 0 :(得分:1)
使用嵌套的for-loop
。
在第一个嵌套for-loop
结束后,以反方向开始第二个。
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;
答案 1 :(得分:1)
如果使用中间数组存储内部循环数据,则可以使用单个嵌套循环执行此操作,然后在内部循环之后,将其连接到结果以及“反转”#34;数据
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;
答案 2 :(得分:0)
有时解决问题的好方法是逐步解决问题。例如,您可以创建一个计数方法,一个计数倒计时。这样做不仅可以使问题更容易解决,还可以帮助使代码更易读,更容易理解:
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;