java语言代码输出金字塔 怎么用java打出金字塔( 二 )


for(int kongge=0;konggehang;kongge++){//控制空格
System.out.print(" ");
}
for(int neirong=nr;neirong0;neirong--){//看,内容等于nr
System.out.print("*");
}
nr=nr-2;//每循环完一次,nr减少2;
System.out.println();
}
看到了么第三个for循环里的neirong0,我写的是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;hang6;hang++){//第一个FOR循环,控制行
int chushi=0;//上面两个参数的初始值0
for(int kongge=0;konggehang;kongge++){//控制空格
System.out.print("\t");//打印空格
}
for(int neirong=nr;neirong0;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个数,
那就是
13927812438127931
1110987654321
6以前的都是执行乘法,5以后的都是执行的除法饿 。
你自己在仔细看看吧
刚看了这个问题 , 临时想的方法 , 可能不怎么好,但是你也可以看一看 。
如何用JAVA 编写一个递归程序输出如下数字金字塔这个不用递归吧 , 几个循环搞定了:
for (int i=1; i=4; i++)
{
for ( int k=1; k=4-i; k++)System.out.print(" ");//输出前导空格
for ( int j=1; j=i, j++)System.out.print(""+j);//输出升序数字

推荐阅读