如何使用最少的for循环创建以下数字模式。是否有任何数学模型给出的数字模型,如Fibonacci,pascal三角形,任何其他有趣的模式,这些模式很复杂但可能使用for循环?
预期的O / P模式:
1
22
333
4444
55555
6666
777
88
9
// For循环只打印1到5,它打印正确,反转时输出错误。
for(int i=1; i<10; i++)
{
for(int j=1,k=10; j<=i&&k>5; j++,k--)
{
if(i<=5)
System.out.print(i);
else
if(i>5)
System.out.print(i);
}
System.out.println();
}
答案 0 :(得分:2)
你在这里:
for (int i = 1, j = 1 ; i < 10 ; i++, j = (i <= 5) ? (j*10 + 1) : (j/10))
System.out.println(i * j);
答案 1 :(得分:2)
另一种逻辑更简单的解决方案:
public static void main(String[] args) {
int input = 5;
for (int i = 1; i <= 2 * input - 1; i++) {
for (int j = 0; j < input - Math.abs((input - i)); j++)
System.out.print(i);
System.out.println();
}
}
您可以根据输入的差异绝对值打印元素。 如果您将输入更改为其他值,这仍然有效。
答案 2 :(得分:1)
这是一个没有循环的解决方案(递归)
public class NumberTriangle {
public static void print(int top_, int count_, int length_) {
int top = top_;
int count = count_;
int length = length_;
count++;
if (count <= top){
length++;
} else {
length--;
}
if (length == 0) {
return;
}
String s = String.format(String.format("%%0%dd", length), 0).replace("0",""+count);
System.out.println(s);
NumberTriangle.print(top, count, length);
}
public static void main (String args[]){
NumberTriangle.print(5,0,0);
}
}
答案 3 :(得分:0)
java-8解决问题的方法:
IntStream.range(MAX * -1, MAX)
.forEach(i -> IntStream.rangeClosed(1, MAX - Math.abs(i))
.mapToObj(j -> j == MAX - Math.abs(i) ? MAX - Math.abs(i) + "\n" : MAX - Math.abs(i) + " ")
.forEach(System.out::print)
);
答案 4 :(得分:-1)
@RandMate你可以这样做:
要打印此图案,您必须将图案分成两部分并使用
两组嵌套for循环:
开始:
int i,j,p;
/ 第一个嵌套循环打印
1
22
333
4444
55555 /
对于(I = 1; I&LT; = 5;我++)
{
为(J = 1; J&LT; = I; J ++)
{
是System.out.print(ⅰ);
}
的System.out.println();
}
/*this is the second nested loop to print
6666
777
88
9 */
p=6;
for(i=4;i>=1;i--)
{
for(j=1;j<=i;j++)
{
System.out.print(p);
}
p=p+1;
System.out.println();
}
Hope it was helpul.
ALL THE BEST......enjoy!