我想生成这样的模式
1234554321
1234 4321
123 321
12 21
1 1
12 21
123 321
1234 4321
1234554321
使用此代码
public class Pattren {
public static void main(String[] args) {
// TODO Auto-generated method stub
int i,j,n;
n=Integer.parseInt(args[0]);
for(i=0;i<n;i++)
{
System.out.println();
for(j=1;j<=n-i;j++)
System.out.print(j);
for(j=0;j<2*i;j++)
System.out.print(" ");
for(j=n-i;j>0;j--)
System.out.print(j);
}
for(i=2;i<=n;i++)
{
System.out.println();
for(j=1;j<=i;j++)
System.out.print(j);
for(j=i;j>0;j--)
System.out.print(j);
}
}
}
这就是我得到的:
1234554321
1234 4321
123 321
12 21
1 1
1221
123321
12344321
1234554321
你能帮我解决这个问题吗?
答案 0 :(得分:2)
您忘记在底部打印空格。您可以使用:
for (j = 2 * (n - i); j > 0; j--) {
System.out.print(" ");
}
<强>输出继电器:强>
1234554321
1234 4321
123 321
12 21
1 1
1 1
12 21
123 321
1234 4321
1234554321
答案 1 :(得分:0)
public static void main(String[] args) {
printPattern(5);
}
public static void printPattern(int count) {
for (int i = 0; i < count; ++i) {
printLine(count, i);
}
for (int i = count - 1; i >= 0; --i) {
printLine(count, i);
}
}
private static void printLine(int count, int missing) {
for (int i = 1; i <= count; ++i) {
boolean isMissing = i > count - missing;
System.out.print(isMissing ? " " : String.valueOf(i));
}
for (int i = count; i > 0; --i) {
boolean isMissing = i > count - missing;
System.out.print(isMissing ? " " : String.valueOf(i));
}
System.out.println();
}
printPattern(9)=
123456789987654321
12345678 87654321
1234567 7654321
123456 654321
12345 54321
1234 4321
123 321
12 21
1 1
1 1
12 21
123 321
1234 4321
12345 54321
123456 654321
1234567 7654321
12345678 87654321
123456789987654321
答案 2 :(得分:0)
我试图在C#中的一个声明中这样做只是为了好玩。分享每个人的娱乐。
Console.WriteLine(
string.Join(Environment.NewLine,
Enumerable.Range(0, 11).Select(x => Math.Abs(5 - x)).Select(i =>
string.Join("", Enumerable.Range(1, i).Select(x => x.ToString())) +
new string(' ', (5 - i) * 2) +
string.Join("", Enumerable.Range(1, i).Select(x => (i - x + 1).ToString()))
).Where(s => s.Trim().Length > 0)));
我实际上想在java中发布它,但不知道Java中是否有一些等效的LINQ。 C#语法非常接近,如果可以找到Enumerable.Range()
或等效语句,则可以在没有任何更改的情况下工作。
答案 3 :(得分:0)
您没有为下半部分打印空格。下面的代码工作正常:
public class Pattren {
public static void main(String[] args) {
// TODO Auto-generated method stub
int i,j,n;
n=Integer.parseInt(args[0]);
for(i=0;i<n;i++)
{
System.out.println();
for(j=1;j<=n-i;j++)
System.out.print(j);
for(j=0;j<2*i;j++)
System.out.print(" ");
for(j=n-i;j>0;j--)
System.out.print(j);
}
for(i=2;i<=n;i++)
{
System.out.println();
for(j=1;j<=i;j++)
System.out.print(j);
for (j = 2*(n - i); j > 0; j--)
System.out.print(" ");
for(j=i;j>0;j--)
System.out.print(j);
}
}
}