怎样用JAVA打印出下面下列数字金字塔

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样用JAVA打印出下面下列数字金字塔相关的知识,希望对你有一定的参考价值。

1 3 9 3 1
1 3 1
1

这是我看到的第三个相同的问题了

先给你讲思路吧,首先这是个三角形,用3个FOR循环打印,一个控制行,一个控制前面的空格,一个控制后面打的东西。

如:

for()//控制行数

 for()//控制每行前面的空格

 

 for()//控制每行所打的东西

 

例如光打个三角形的,不管里面的数字,那就这样:

for(int hang=0;hang<6;hang++)//控制行(hang)

for(int kongge=0;kongge<hang;kongge++)//控制前面空格

System.out.print(" ");

for(int neirong=6;neirong>hang;neirong--)//控制内容

System.out.print("*");

System.out.println();//打印完一行换行

第三个FOR循环里面的neirong>hang(这个变量可以自己定,表示有对少内容,这个是大于行数,由行数来决定,因为行数循环一次增加一次,则内容就减少一个)

上面是每打一行,则少一个内容,而你的题目是少两个,你数数,你的第一行有11个,第二就有9个了。

那就这样:

int nr=11;//定义控制内容个数的变量nr

for(int hang=0;hang<6;hang++)//控制行

for(int kongge=0;kongge<hang;kongge++)//控制空格

System.out.print(" ");

for(int neirong=nr;neirong>0;neirong--)//看,内容等于nr

System.out.print("*");

nr=nr-2;//每循环完一次,nr减少2;

System.out.println();

看到了么第三个for循环里的neirong>0,我写的是0,也可以的,意思内容由nr决定,第一次循环是11个数字,结束后nr-2,下一次循环就是9个数字了,以此类推

------------

好了,现在形状已经打印出来了,那就把里面的*改成变化的数字就可以了。首先你的数字是先是以3的倍数增加,然后到中间后,以3的倍数减少。你数数,每行都是从最中间开始变的,中间那个数最大。

那首先我想到的是写两个方法,一个乘,一个除。

一下是两个方法:

public static int cheng(int num1)

num1=num1*3;

if(num1==0)

num1=1;

return num1;

public static int chu(int num1)

num1=num1/3;

return num1;

现在方法写了,我们直接带入进去就好了;

我给全部代码:

public class San //类名三

public static int cheng(int num1)//静态乘法方法

num1=num1*3;//带入的参数乘3

if(num1==0)//判断如果参数是0,则直接返回1

num1=1;

return num1;//返回结果

public static int chu(int num1)//静态方法除法

num1=num1/3;//参数直接除以3

return num1;//返回结果

public static void main(String[] args) //程序入口main方法

int nr=11;//定义初始内容个数,11个

for(int hang=0;hang<6;hang++)//第一个FOR循环,控制行

int chushi=0;//上面两个参数的初始值0

for(int kongge=0;kongge<hang;kongge++)//控制空格

System.out.print("\\t");//打印空格

for(int neirong=nr;neirong>0;neirong--)//控制内容

int zhongjian=0;//定义最中间的数

if(nr%2!=0)//内容个数除2有余,则除2+1

zhongjian=nr/2+1;

else//内容没有余数,则直接除2

zhongjian=nr/2;

if(neirong>=zhongjian)//如果内容个数大于中间数,则实行乘法

System.out.print(cheng(chushi)+"\\t");

chushi=cheng(chushi);

else//如果内容小于中间数,则实行除法

System.out.print(chu(chushi)+"\\t");

chushi=chu(chushi);

nr=nr-2;//换行,内容个数减少2个

System.out.println();//换行

--------------------------

不知道你明白没。

上面的中间数意思是说告诉程序哪里开始递减。

比如第一行,有11个数字,到第6个数的时候停止再乘3,转向除3,

那怎么得到6?那就用11/2,而这样只能得到5,所以我上面用了判断,如有有余数的话,就加上1,那中间数就得到6了,如果没余数,就直接除2,第二行就是10/2,得到了5,你看看中间是不是第5个丫。

下面我判断如果neirong>=zhongjian如果内容大于中间数的话,就执行乘法,不大于就执行除法。

用实际例子说明:你的例子第一行,有11个数,

那就是

1    3    9    27    81    243    81    27    9    3    1

11  10    9    8     7     6    5    4      3    2    1

6以前的都是执行乘法,5以后的都是执行的除法饿。

你自己在仔细看看吧

刚看了这个问题,临时想的方法,可能不怎么好,但是你也可以看一看。

参考技术A public class DaoSanJiao
public static void main(String[] args)
for(int i=0;i<=2;i++)
//控制空格输出
if(i==1)
System.out.print(" ");
if(i==2)
System.out.print(" ");

for(int j=0;j<5 -i*2;j++)
if(j<=2-i)
int x=(int)Math.pow(3, j);
System.out.print(x+" ");
else
int x=(int)Math.pow(3, j % 2);
System.out.print(x+" ");


System.out.println();


参考技术B int n=6;
for(int i=0;i<n;i++)
for(int j=0;j<i;j++)
System.out.print("\t");

for(int j=0,v=1;j<n-i;j++)
System.out.print(v+"\t");
v*=3;

while(v>0)
System.out.print(v+"\t");
v/=3;

System.out.println();
参考技术C System.out.println("1 3 9 3 1 ");
System.out.println(" 1 3 1 ");
System.out.println(" 1 ");本回答被提问者采纳
参考技术D public class PrintTi

public static void main(String[] args)

for(int i=3;i>0;i--)
int k = 1;
int a = 1;
int q = -1*i+3;
for(;q>0;q--)

System.out.print(" ");
//打空格
for(int j=2*i-1;j>0;j--)

if(a<1) break;
System.out.print(a+" ");
if(k<j/2+1)
a=a*3;
else
a=a/3;
k++;

System.out.println("");



怎么用java打印金字塔

参考技术A   public class work2
  public static void main(String[] args)
  method(9);
  
  //参数化控制行数
  public static void method(int n)
  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.println();
  
  
  

以上是关于怎样用JAVA打印出下面下列数字金字塔的主要内容,如果未能解决你的问题,请参考以下文章

C语言实验——打印金字塔

怎么用java打印金字塔

用python打印数字金字塔

用java把1-100这100个数字按顺序排成金字塔形状,尽量用最简单的代码实现

java,输入整数n(1<=n<=9),打印出n行数字金字塔,急急急!!!

C语言打印金字塔 1 123 12345 1234567