普通直角三角形
思路
- 第一行1个,第二行2个,第三行3个,一此内推,第n行比第n-1行多一个,要有两个循环语句,第一个循环代表行数,第二次循环画出三角形的轮廓,第一行画一个,第二行画两个,总之画出的图形要小于等于行数。
代码
public class dome2{
public static void main(String[] args) {
for(int i=1;i<=5;i++) { //代表行
for(int j=1;j<=i;j++) { //代表列,画出图形
System.out.print("*");
}
System.out.println(); //换行
}
}
}
答案
*
**
***
****
*****
等腰直角三角形
思路
- 跟直角三角形的排列方式差不多,总比前一行多一个,等腰三角形的左边有一个空倒立的三角形,专门为等腰三角形导出形状,需要三个循环语句,一个循环最左边空形状倒立的三角形,把等腰三角形分成两个直角三角形,第二个循环左边的直角三角形,第三个循环右边的直角三角形。
代码
public class dome2{
public static void main(String[] args) {
for(int i=1;i<=7;i++) { //一共7行
for(int j=6;j>=i;j--) {
System.out.print(" "); //左边的空倒立三角形
}
for(int j=2;j<=i;j++) {
System.out.print("*"); //左边被分割的直角三角形
}
for(int j=1;j<=i;j++) {
System.out.print("*"); //右边的被分割直角三角形
}
System.out.println();
}
}
}
答案
*
***
*****
*******
*********
***********
*************
杨辉三角形
思路
- 每行前面都有空格,并且每一行空格都在缩小,这需要根据行数来判断,每一行中间的数值是与前一行对齐相邻中间数的和,可以根据前面的值来算出。
代码
public class dome2{
public static void main(String[] args) {
play(5);
}
public static void play(int row) {
for (int i = 1; i <= row; i++) { //输出行数
for (int j =1; j<=row-i; j++) { //输出左边空格的形状
System.out.print(" ");
}
for (int j = 1; j <= i; j++) { //调用nve函数输出三角形
System.out.print(nve(i, j) + " ");
}
System.out.println(); //换行
}
}
public static int nve(int x, int y) {
if (y == 1 || y == x) {
return 1;
}
int c = nve(x - 1, y - 1) + nve(x - 1, y);
return c;
}
}
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
空三角形
思路
- 与上面的杨辉三角形差不多,只是边上才有图,中间的算法直接省去,改成空字符串。
代码
public class dome2{
public static void main(String[] args) {
play(6);
}
public static void play(int row) {
for (int i = 1; i <= row; i++) { //输出行数
for (int j =1; j<=row-i; j++) { //输出左边空格的形状
System.out.print(" ");
}
for (int j = 1; j <= i; j++) { //调用nve函数输出三角形
System.out.print(nve(i,j,row) + " ");
}
System.out.println(); //换行
}
}
public static String nve(int x,int y,int tt) {
if((y==1||y==x)&&x!=tt) { //在第一列和最后一列输出,最后一样必须全部输出
return "*";
}else if(x==tt) { //最后一行全部输出
return "*";
}else {
return " ";
}
}
}
*
* *
* *
* *
* *
* * * * * *