这实际上是一个面试问题.我不得不使用
Java打印以下内容:
9
9 8 9
9 8 7 8 9
9 8 7 6 7 8 9
. . .
. . .
在采访中,我写了一段令人尴尬的代码,但它仍然有效 – 使用外循环,两个内循环(一个用于递减序列,一个用于递增序列!)和一大堆变量.其中一个变量是每行的长度.
面试官让我试着用它来重写它
>只有一个外环和一个内环
>没有行长度变量.
注意:在看了答案后,我认为面试官并不是真正意味着第二个条件.他可能只是想让我简化我的代码,第二点只是从他嘴里蹦出来.
所以,后来回到家里,我到了这里:
int rowCnt = 5;
for(int i = 1; i <= rowCnt; i++)
{
int val = 9;
int delta = -1;
int rowLen = i * 2 - 1;
for(int j = 1; j <= rowLen; j++)
{
System.out.print(val + " ");
val += delta;
if(j >= rowLen / 2) delta = 1;
}
System.out.println();
}
在这里,我只使用一个内循环.我正在使用delta值来确定是否发生递增或递减.对于每一行,我将当前索引与行的中点进行比较并更改增量.
我满足了第一个条件 – 只有一个内循环.但是如果不使用行长度我就无法做到.
如何在不查找行长的情况下打印出来?
许多答案都是可以接受的,但我不得不选择一个,然后挑选一个最容易理解的答案.