您的位置:首页 > 编程语言 > Java开发

java每日一练(金字塔算法实现)

2017-11-05 21:37 253 查看
实现:输入任意一个行数,实现该行数的金字塔
     *
   ***
  *****
*******
步骤1:
分析(以4行金字塔为例子):每一行先打印出空格,然后打印出*;每行的空格依次是3-->2-->1-->0,每行的*依次是1-->3-->5-->7
从分析可以两个for循环可以分别实现每行要打印出的,简要写出算法
lay  //行数
for(int rowLine=1;rowLine<=lay;rowLine++)   //rowLine为当前行
{
打印出当前行的空格
打印出当前行的*
System.out.println("");
}
打印出当前行的空格:3、2、1、0,那么对应for循环应该是
for(int i=1;i<=lay-rowLine;i++) // (层数-当前行数)为当前行需要打印出的空格
{
System.out.print(" ");
}
打印出当前行的*:1,,3,5,7,那么对应的for循环应该是
for(int j=1;j<=2*rowLine-1;j++)//    (当前行*2-1)为当前需要行需要打印出的*个数
{
System.out.print("*");
}
经过以上分解后,整个步骤就非常清晰了

步骤2:
输入任意层数实现
这个地方需要调用扫描
import java.util.Scanner;
Scanner sc=new Scanner(System.in);
lay = sc.nextInt();

具体代码实现
import java.util.Scanner;
class Pyramid
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
System.out.print("请输入行数:");
int lay = sc.nextInt(); //层数
for(int rowLine=1;rowLine<lay+1;rowLine++)
{
//先打出空格,1>3,2>2,3>1,4>0
for(int nulNum=1;nulNum<=lay-rowLine;nulNum++)
{
System.out.print(" ");
}
//打出*,每层个数打出来 1>1;2>3;3<5;4<7;
for(int AsteriskNum=1;AsteriskNum<=rowLine*2-1;AsteriskNum++)
{

System.out.print("*");

}
System.out.println("");
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: