用单个for循环制作星形图案的程序

时间:2016-06-01 12:30:58

标签: java

我做了以下计划

public class StarPattern5 {
    public static void main(String args[])
    {
        int j=1;
        for(int i=1;i<=15;i++)
        {
            System.out.print("*");
            if(i==1 || i==3 || i==6 || i==10)
            {
                System.out.println();
            }

        }
    }

}

正在打印

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

我想优化它,这样我们就可以打印50行而无需编写太多代码。提前付款.. :)

7 个答案:

答案 0 :(得分:3)

只需在循环中累积一个字符串:

String s = "";
for (int i = 0; i < 50; ++i) {
  System.out.println(s += "*");
}

或:

for (String s = "*"; s.length() <= 50; s += "*") {
  System.out.println(s);
}

答案 1 :(得分:1)

您可以使用Apache common lang软件包中的StringUtils类,如下所示:

public class StarPattern5 {
    public static void main(String args[]){
        for(int i =1;i<=50;i++)
            System.out.println(StringUtils.repeat('*',i));
    }
}

这样可以防止您编写太多代码,但它会使用第三方库,这取决于您的确切需要/需要。

答案 2 :(得分:1)

这是一个单一循环变体,如果它到达名为i的变量,会将count重置为0.

public class star {
    public static void main(String...banana)
    {
        for (int i = 0, count = 1; i < 50; i++)
        {
            if (i == count)
            {
                count++;
                i = 0;
                System.out.println("");
            }
            System.out.print("*");
        }
    }
}

答案 3 :(得分:0)

您可以使用具有相同时间复杂度1 for循环的递归打印此类三角形,如下所示:

public String printTriangle (int count) {
if( count <= 0 ) return "";

String p = printTriangle(count - 1);
p = p + "*";
System.out.println(p);

return p; 

如果要打印50行的三角形,则传递参数count = 50

答案 4 :(得分:0)

static void Main(string[] args)
    {
        Console.Write("Enter a Number : ");
        int num;
        num = Convert.ToInt32(Console.ReadLine());
        string design = null;
        ////////Forpatern 
        ///    *****
        ///    ****
        ///    ***
        ///    **
        ///    *
        ////----start----------
        for (int i = num; i >= 0; i--)
        {
            if (num != 1)
            {
                if (i == 0)
                {
                    num = num - 1;
                    //Console.WriteLine();
                    design = design + System.Environment.NewLine + ("*");
                    i = num;
                }
                else
                {
                    design = design + ("*");
                }
            }
        }
        //-----End
        int spaceCounter = 0;
        int Rows = num;
        ////////For patern 
        ///    *****
        ///     ****
        ///      ***
        ///       **
        ///        *
        ////----start----------
        for (int i=num;i>=0;i--)
        {
            if(spaceCounter==0)
            {
                if (i != 0)
                {
                    design = design + "*";
                }
                else {
                    num = num - 1;
                    i = Rows + 1;
                    spaceCounter = Rows - num;
                    design = design + System.Environment.NewLine;
                }
            }
            else if(spaceCounter>0){
                design = design + " ";
                spaceCounter = spaceCounter - 1;
            }
        }

        ///---------End
        Console.WriteLine(design);
        Console.ReadLine();
    }

答案 5 :(得分:-1)

这很容易。像这样,你可以自己做吧

public class StarPattern5 {
public static void main(String args[])
{
    StringBuilder sb = new StingBuilder("");
    for(int i =1;i<=50;i++){
        sb.append("*");
        System.out.println(sb.toString());
    }
}

答案 6 :(得分:-1)

#CPP程序,用于在一行中使用一个循环来打印动态金字塔图案。

https://www.linkedin.com/posts/akashdarji8320_cpp-cplusplus-c-activity-6683972516999950336-ttlP

#include <iostream>

using namespace std;

int main() {
    int rows;
    
    cout<<"Enter number of rows :: ";
    cin>>rows;
    
    for( int i = 1, j = rows, k = rows; i <= rows*rows; i++ )
        if( i >= j && cout<<"*" && i % k == 0 && (j += rows-1) && cout<<endl || cout<<" " );
}