黑马程序员技术交流社区
标题:
for嵌套做了一个菱形
[打印本页]
作者:
ly123456
时间:
2016-3-19 20:29
标题:
for嵌套做了一个菱形
class Text2 {
public static void main(String[] args) {
//打印一个等边三角形
/*for (int x = 1; x <= 5 ;x ++ ) {
for (int y = 1;y <= x ;y ++ ) {
System.out.print("*");
}
System.out.println();
}*/
/*打印一个等边三角形,如下图所示:
*
***
*****
******* */
int n = 1; //定义变量n
for (int x = 1;x <= 4 ;x ++ ) { //外循环。控制等边三角形的行数
for (int y = 1;y <= 4 - x ;y ++ ) { //内循环一:通过打印空格来控制*打印的位置
System.out.print(" "); //空格第一行多,没行递减一个.
}
for (int z = 1;z <= n ;z ++ ) { //内循环二:控制每一行打印*的个数
System.out.print("*"); //第一行一个,每行递增两个
}
System.out.println(); //内循环全部执行完毕后,换行.
n += 2; //因为打印的*每行递增2个.所以循环变量+2.
}
System.out.println("----------------------------------------------------------");
/*需求,打印一个倒的等边三角形.如图所示
*******
*****
***
*
思路:此图形跟上图形对称相反,做法应该一样,
所不同的就是初始化值和条件表达式.*/
int m = 1;
for (int x = 1;x <= 4 ;x ++ ) { //用外循环来确定图形行数
for (int y = 1;y < x ;y++ ) { //用内循环一来通过打印空格来控制*开始打印的位置
System.out.print(" "); //第一行没有空格,每行递增一个
}
for (int z = 1;z <= 7 - m + 1 ; z ++) { //用内循环二来控制打印*的个数
System.out.print("*"); //第一行为7个,每行递减两个
}
System.out.println();
m += 2;
}
System.out.println("--------------------------------------------");
/*需求,打印一个菱形.如下图所示
*
***
*****
*******
*****
***
*
思路:次图形可以看做是两个对称的两个等腰三角形,
首先把图形拆分,发现图形的对称轴线是在第四行.
是否可以通过if语句来实现*/
int i = 1;
int j = 5;
for (int x = 1;x <= 7 ;x ++ ) { //外循环.控制图形行数
if (x <= 4) { //if语句,控制前四行图形打印
for (int y = 1;y <= 4 - x ;y ++ ) { //打印空格.因为第一行空格最多,接下来每行递减,所以用4-x来控制
System.out.print(" ");
}
for (int z = 1;z <= i ;z ++ ) { //*第一行最少,一次每行递增2.所以定义一个变量,每次循环完+2
System.out.print("*");
}
i += 2;
} else { //if的else语句来控制图形第四行,即跟上面对称相反的图形
for (int y = 5;y <= x ;y ++ ) { //因为此时的X值为5,所以内循环初始化值为5,然后条件表达小于X即可
System.out.print(" "); //接下来随着X的递增就能达到空格每行递增的目的了
}
for (int z = 1;z <= j;z ++ ) { //因为*需要打印的个数为5个,所以定义变量为5,然后每次循环递减2.
System.out.print("*");
}
j -= 2;
}
System.out.println();
}
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2