java编写金字塔

文章展示了如何使用Java编程实现不同类型的金字塔图案,包括逐层增加星号的实心金字塔、星星交叉分布的平均分布金字塔以及边缘为星号的空心金字塔。关键在于调整打印星号的位置和数量,同时提到了Java中三目运算符的使用限制。

一、实心金字塔

首先,尝试写一个逐层加1个*的金字塔:
可以看出,每一层由空格和*组成,且空格+*的总数为底部基石的数量,那么前后空格数就是(底部基石数 - 各层星星数)*1/2,然后拼接字符串打印空格+*+空格即可(注意:java直接/会取整)
在这里插入图片描述
然而在计算机显示中,每行列都是垂直对应,可以从上图结果看出,逐层加*并不能保证对其,但保留奇数行可以得到一个正三角金字塔。那么跳过偶数行打印,即可得到一个正三角的金字塔:
在这里插入图片描述
最终代码如下:

public class Test{
	public static void main(String[] args){
		int starNum = 7;
		System.out.println("start=" + starNum);
			for(int i = 1; i <= starNum;i += 2){
				String str = "";
				for(int m=0;m<(starNum - i)/2;m++){
					str += " ";
				}
				for(int n=0;n<i;n++){//can change
					str += "*";
				}
				for(int m=0;m<(starNum - i)/2;m++){
					str += " ";
				}
				System.out.print(str + "\n");
			}
	}
}

二、平均分布金字塔

星星交叉分布效果:
在这里插入图片描述
代码只需修改打印*位置的循环,间隔显示*空格

for(int n = 0;n < i;n++){//can change
	if(n % 2 == 0){
		str += "*";
	}else{
		str += " ";
	}
	//或简化成三目运算
	//str += n % 2 == 0 ? "*" : " "; 
}

三、空心金字塔

边缘为*,描绘一个金字塔的形状,效果如下:
在这里插入图片描述
同理,代码只需修改打印*位置的循环,在输出*的字段中,始末位置为*,其余位置为空格,且最后一行全部为*

				for(int n=0;n<i;n++){//can change
					if(i<starNum){
						 if((n==0)||(n==i-1)){
						    str+="*";
						 }else{
						   str+=" ";
					    }
					    //或者简化为三目运算
					   	//str += n==0||n==i-1?"*":" ";
					}else{
						str+="*";
					}
				}

补充:
前端转后端的童鞋注意了,在java中,三目运算符不能在里面写赋值语句,这点和js不一样。比如(n > 2) ? (str = "*") : (str = "%");,这句话前端js可以编译通过,但如果放到java里就会编译不通过,报错:不是语句。java中应当这样写:str = n > 2 ? "*" : "%"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值