如何使用嵌套循环先递增再递减?

时间:2018-12-19 17:32:08

标签: java loops nested-loops

我无法弄清楚如何使用嵌套循环向上然后向下计数。目前,我的输出是:

2
33
444
5555
66666

当我希望它像这样输出时:

2
33
444
33
2

我不确定如何解决此问题。我一直在努力工作,似乎无法改变方法以使其正常工作。

这是我当前的产生第一个输出的代码:

2 个答案:

答案 0 :(得分:3)

此输出具有两个有趣的属性。对于每一行i,我们可以这样说:

  1. 每行中的字符数是itimes - i之间的最小值。
  2. 要打印的字符是该行中的字符数+ 1。

如果将所有内容放在一起:

int lines = 3;
int times = lines * 2;
String output = "";
for(int i = 1; i < times; i++)
{
    int numChar = Math.min(i, times - i);
    int toPrint = numChar + 1;
    for(int k = 1; k < toPrint; k++) {
        output += toPrint;
    }

    output += "\n";
}
System.out.println(output);

答案 1 :(得分:0)

在您的示例中,第二个内部循环什么也不做,它永远不会开始,只有第一个产生输出。我认为您的想法几乎有四个循环,两个两个嵌套。可以,但是您只需要巧妙地使用两个嵌套循环即可。

const array = $('.myClass').map((i, elem) => {
  const animal = $(elem).parents('li').text();
  const age = $(elem).parents('p').text();

  return { animal, age };
}).get();

console.log(array);

诀窍在于如何使用第二个循环的索引:public static void main(String[] args){ int lines = 3; int times = lines * 2; int x = 2; String output = ""; for(int i = 1; i < times; i++) { for (int k = 1; k <= Math.min(times-i, i); k++) { output = output + x; } //Update the index if (i < times/2) { x++; } else { x--; } output += "\n"; } System.out.println(output); }

编辑: 编辑之后,您似乎希望数字“旋转”(即... 8,9,0,1 ...)。为了实现这一点,您可以在内部循环中完成:

Math.min(times-i, i)

另一个选项(在内循环之外):

            String xS = String.valueOf(x);
            output += xS.charAt(xS.length()-1);