for循环打印三角形的两种方法
打印一个5行三角形
方法一:
public class TestDemo01 {
public static void main(String[] args) {
int outLeft = 5;
int outRight = 5;
for (int row = 0; row < 5; row++) {
for (int i = 1; i <= 9; i++) {
if (i >= outLeft && i <= outRight) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
--outLeft;
++outRight;
System.out.println();
}
}
}
我的思路是先在excel里画了一个三角形,然后知道了每行分别应该打印多少的星号多少的空格。如图所示:
所以可以看到每行分别应该打印1、3、5、7、9个*号。
然后从中间的第5个字符位置开始向左右打印星号,其他的字符位置打印空格。
最后效果如图:
方法二:
public class TestDemo02 {
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
for (int j = 5; j > i; j--) {
System.out.print(" ");
}
for (int j = 0; j <= i; j++) {
System.out.print("*");
}
for (int j = 0; j < i; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
方法二的思路是:设想要打印的三角形是在一个正方形中剪切出来的。
如图,里层第一个for循环先打印这个三角形(实际应该打印空格):
然后打印第二个三角形,这个三角形其实就是第一个三角形的中心对称,因此里层第二个for循环条件就是第一个的对称,如图所示:
然后再打印第三个三角形,如图所示(因为前面两个循环注释掉了,所以这个三角形的实际位置应该是在前面两个三角形的右边):
最后的整体效果如图:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现