使用二重循环打印各种图形

 

1.       打印直角三角形

需求说明:

从控制台输入直角三角形的高度(行数)。

每行*的数目依次为1357等。

实现思路:外层循环控制行数,根据用户输入的行数得到外层循环条件

分析每行打印的内容:每一行均打印*号,第i行的*号数为2*i-1,从而得到内层循环条件

代码如下:

import  java.util.Scanner;

 

publi  cclass  Three {

    public  static  void  main(String[] args)

    {

       int  rows = 0;

       Scanner input = new Scanner(System.in);

       System.out.println("请输入直角三角形的行数:");

       rows=input.nextInt();

       for(int i=0; i<=rows; i++)

       {

           for(int j=0; j<2*i-1; j++)

           {

              System.out.print("*");

           }

           System.out.println("");

       }

    }

 

}

 

2.       打印倒直角三角形

需求说明:

从控制台输入直角三角形的高度(行数)。

每行*的数目从下至上依次为1234等。

实现思路:外层循环控制行数,根据用户输入的行数得到外层循环条件。

分析每行打印的内容,每一行均打印*号,某一行与该行的*号数之和等于行数加1,从而得到内层循环条件。

例如:用户从控制台输入的行数用rows表示,第几行用i表示,*号数用x表示,那么

i行就是:i+x=rows+1-----------------à*号数x=rows+1-i

代码如下:

import  java.util.Scanner;

 

public  class  Four {

    public  static  void  main(String[] args)

    {

       int  rows=0;

       Scanner input = new Scanner(System.in);

       System.out.println("请输入直角三角形的行数:");

       rows=input.nextInt();

       for(int i=1; i<=rows; i++)

       {

           for(int j=1; j<=rows+1-i; j++)

           {

              System.out.print("*");

           }

           System.out.println("");

       }

 

    }

 

}

 

3.       打印等腰三角形

需求说明:

从控制台输入直角三角形的高度(行数)。

每行*的数目依次为1357等。

实现思路:外层循环控制行数,根据用户输入的行数得到外层循环条件。

分析每行打印的内容:每一行先打印空格,再打印*号。打印空格和打印*号用两个不同的for循环。为了清晰起见,下面我们以#号代替空格来分析每行空格数、*号数和行数的关系:第i行的空格数与i之和等于用户从控制台输入的行数rows,第i*号数为2*i-1,从而得到两个内层for循环的循环条件。

例如:用户从控制台输入的行数用rows表示,第几行用i表示,空格数数用space表示,那么

i行就是:i+space=rows-----------------à空格数space=rows-i

代码如下:

import  java.util.Scanner;

 

public  class  Five {

 

    public  static  void  main(String[] args) {

       // TODO Auto-generated method stub

       int  rows=0;

       Scanner input = new Scanner(System.in);

       System.out.println("请输入等腰三角形的行数:");

       rows=input.nextInt();

       for(int i=1; i<=rows; i++)

       {

           for(int j=1; j<=rows-i; j++)

           {

              System.out.print("#");

           }

           for(int k=1; k<=2*i-1; k++)

           {

              System.out.print("*");

           }

           System.out.println("");

       }

 

    }

 

}

 

4.       打印菱形

需求说明:

从控制台输入菱形的高度(行数),如果用户输入的行数合法(奇数),则打印出菱形,否则提示用户输入奇数。

假设每行输入的行数为rows,则每行的*号数依次为1357......rows......7531

实现思路:

(1)       利用while循环判断用户输入的是否为奇数。

int  rows=0;

Scanner input = new Scanner(System.in);

System.out.println("请输入菱形行数:");

rows=input.nextInt();

while(rows%2==0)

{

System.out.println("请输入奇数:");

rows=input.nextInt();

}

(2)   分步打印,先打印菱形的上半部分,即一个等腰三角形,行数为(rows+1)/2,可以

得到外层循环和两个内层循环的循环条件。

int n=(rows+1)/2;

for(int i=1;i<=n;i++)

{

for(int j=1; j<=n-i; j++)

{

System.out.print(" ");

}

for(int k=1; k<=2*i-1; k++)

{

System.out.print("*");

}

System.out.print("\n");

}

(3)   打印菱形的下半部分,打印完一行后换行

for(int i=n-1; i>=1; i--)

{

for(int j=0; j<n-i; j++)

{

System.out.print(" ");

}

for(int k=0; k<2*i-1; k++)

{

System.out.print("*");

}

System.out.print("\n");

}

完整代码如下:

import  java.util.Scanner;

 

public  class  Six {

 

    public  static  void  main(String[] args) {

       // TODO Auto-generated method stub

       int rows=0;

       Scanner input = new Scanner(System.in);

       System.out.println("请输入菱形行数:");

       rows=input.nextInt();

       while(rows%2==0)

       {

           System.out.println("请输入奇数:");

           rows=input.nextInt();

        }

       int n=(rows+1)/2;

       for(int i=1;i<=n;i++)

       {

           for(int j=1; j<=n-i; j++)

           {

              System.out.print(" ");

           }

           for(int k=1; k<=2*i-1; k++)

           {

              System.out.print("*");

           }

           System.out.print("\n");

       }

       for(int i=n-1; i>=1; i--)

       {

           for(int j=0; j<n-i; j++)

           {

              System.out.print(" ");

           }

           for(int k=0; k<2*i-1; k++)

           {

              System.out.print("*");

           }

           System.out.print("\n");

       }

    }

}

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值