方法1
用for循环打印等边三角形。
首先看看等边三角形的形状:
用狂神老师的方法打印等腰三角形如下:
点击查看:狂神说讲解for循环打印等边三角形的方法视屏
狂神老师的代码:
public class sequence_learning10 {
public static void main(String[] args) {
for(int i=1;i<=5;i++) {//定义5行
for(int j=5;j>i;j--){
System.out.print(" ");//先打印空白部分,即空格
}
for(int j=1;j<i;j++) {
System.out.print("*");//打印左边部分的一半三角形
}
for(int j=1;j<=i;j++) {
System.out.print("*");//打印右边部分的三角形
}
System.out.println();//每打印一行结束,换行
}
}
}
看完视屏可以得知,狂老师讲解的打印三角形的方法,首先是打印最左边的空格部分
即:
然后打印左边部分的一半直角三角形
即:
最后打印右边一半的直角三角形
即:
最终将整个直角三角形打印完全。
但是看完视屏,对于初学者的我来说,其中的一些算法思想还是有一点难参透的。
不过,还好,我最终还是参透了最基本的原理。无非就是将打印出来的每一行向右平移罢了。
接下来,我用自己的方法打印一个等腰三角形,且只用三个for循环即可。
方法2
首先我们讲解一下等边三角形如何得来:
将上述的等边三角形重新排列,就会得到以下的直角三角形:
那么将这个直角三角形变成等腰三角形,可以右一下方法得到:
我们再来把这个三角形标注更清楚一些:
显而易见,假设行数为n,总行数为N
本三角形总行数为5,即N=5
那么每一行的“ * ”个数就为(2n-1) 如第二行个数为:2 * 2-1=3个
每一行需要向右平移的格数为:总行数减去对应的行数值 如第三行向右平移的格数为:N-3 即5-3=2格
那么代码就非常容易些出来了:
首先,我们要先定义5行:
如下:
然后在给出的5行里,输出一个直角三角形:
行数为 i,每行的“ * ”个数就是(2*i-1)
最后将每一行平移相应的格数即可,如下:
总行数为5,所以每一行的平移格数就为(5-i)格。
如果要输出有n行的等腰三角形,那么只需要修改一下参数即可:
如输出7行的等腰三角形:
n行注释图:
完整代码:
public class sequence_learning11 {//用for循环打印等边三角形,方法二
public static void main(String[] args) {
for(int i=1;i<=5;i++){//定义5行
for(int x=5-i;x>0;x--){
System.out.print(" ");//每行平移对应的格数
}
for(int j=2*i-1;j>0;j--) {
System.out.print("*");//输出每行的“*”;注意用print,而不是println,否则会自动换行
}
System.out.println();//
}
}
}
版权声明:本文为Billyhz原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。