使用直线方程打印星形图案

时间:2017-06-09 08:29:14

标签: java

我想打印以下图案:

    *
   **
  ***
 ****
*****

我知道等式将是x+y<=5。对于此等式,我们必须打印*,但我无法获得for循环条件。 请帮忙。 编辑:这是我写的代码:

public class Pattern{
public static void main(String[] args){
    for(int i = 1; i <= 5; i++)
    {
        for(int j = 1; j <=5; j++)
            System.out.print((-i+j)<=5 ? "*" : " ");
        System.out.println("");
    }
}

}

在第二象限中以直线表示的图案的等式将是y-x <= 5。但是for循环中的条件不满足。

3 个答案:

答案 0 :(得分:1)

您还可以利用String formatting来实现这一点,在这种情况下,这比循环结构更好。 %s表示将此字符串值打印给我,并将其作为参数传递给对象&#39;。 %5s表示“打印”我传递的字符串值,它应该有5个字符的固定长度&#39;。

 StringBuilder x = new StringBuilder();
 for (int i = 5; i > 0; i--) {
    System.out.println(String.format("%5s", x.append("*").toString()));
 }

或使用printf代替String.format\n表示换行符(println自动将这个换行符添加到幕后)

StringBuilder x = new StringBuilder();
for (int i = 5; i > 0; i--) {
   System.out.printf("%5s\n", x.append("*").toString());
}

答案 1 :(得分:0)

这是一个嵌套循环解决方案,有5次迭代。

for(int i = 1; i <= 5; i++)
{
    for(int j = 5 - i; j > 0; j--)
    {
        System.out.print(" ");
    }
    for(int j = i; j > 0; j--)
    {
     System.out.print("*");
    }
    System.out.println();
}

第一个嵌套循环打印空格,空格为5 - iteration number 第二个嵌套循环打印*,其数量等于迭代次数。

如果您希望n次运行,只需将5替换为n

此外,有许多网站可以帮助您解决这些问题,例如:Print Star Pattern in Java

答案 2 :(得分:-1)

代码说明:在这里,我们使用println()函数来打印输出,在打印了一个输出光标之后,在新行中移动了一个。 print()和println()函数之间的主要区别是; print()函数不会在屏幕上输出打印后将光标移动到新行中,但是对于println()函数,它会在打印输出后将光标移动到新行中。

此JAVA程序将使用star(*)打印直角三角形的图案。

    *
   **
  ***
 ****
*****

逻辑

我们使用了一个嵌套的for循环,该循环一直计数到第i个值,并一直打印星号直到该值。

程序

import java.util.*;

 class sp2
{
 public static void main(String args[])
 { 
 int i,j,n;
 Scanner sc = new Scanner(System.in);
     System.out.println("Enter the number of rows");
     n = sc.nextInt();

 for(i=1;i<=n;i++)
     {
         for(j=i;j<n;j++)
         {
             System.out.print(" ");
         }
         for(j=1;j<=i;j++)
         {
             System.out.print("*");
         }
         System.out.println("");
     } 
 }
}

输出

    *
   **
  ***
 ****
*****