*****
*****
*****
*****
*****
具体代码如下:
/**
* 双循环打印菱形图案
* * A *
* *** BBB * *
* ***** CCCCC * *
* ******* DDDDDDD * *
* ***** EEEEE * *
* *** FFF * *
* * G *
*
* @author Monster丶ZF
* @version1.8
* @data 2019年4月9日
* @remakeTODO
*/
public class DoubleForDemo {
public static void main(String[] args) {
for (int i = 0; i < 5; i++) { //外层循-环控制行
for (int j = 0; j < 5; j++) { //每行打印5个符号
System.out.print("*");
}
System.out.println(); // 由外层循环来控制换行
}
}
}
ps:这个是比较简单的,只要记住外循环是控制行数的,外层循环是控制列数的。
*
*** 首先我们可以分为上部分和下部分分别求
*****
*******
*****
***
*
###* 上部分: 可以看出每行都是先打印 #,再打印 *
##*** #:i = 0 j = 2 行从上往下数,列从左往右数,即第0行时有2列
#***** i = 1 j = 1 我们一般找i、j间的关系,用i来表示j的最大值
******* i = 2 j = 0 可以看出 j = 2 - i;
i = 3
*: i = 0 j = 0
i = 1 j = 2 可以看出j = 2 * i;
i = 2 j = 4
i = 3 j = 6
核心代码如下:
for (int i = 0; i < 4; i++) {
for (int j = 0; j <= 2-i; j++) {
System.out.print("#"); //不要换行! 兄dei!
}
//打印完#后接着再打印 *
for (int j = 0; j <=2 * i; j++) {
System.out.print("*");
} //--> 每次内层循环结束了,下面就打印一次换行
System.out.println();
}
------------------------------------------------------------------------------------------------------
下部分:也是一样的, 都是每行先打印 #,再打印 *
#***** #:i = 0 j = 0
##*** i = 1 j = 1 可以看出 j = i;
###* i = 2 j = 2
*: i = 0 j = 4
i = 1 j = 2 可以看出 j = 4 - 2 * i ;
i = 3 j = 0
核心代码如下:
for (int i = 0; i < 3; i++) {
for (int j = 0; j <= i; j++) {
System.out.print("#"); //不要换行! 兄dei!
}
//打印完#后再打印*
for (int j = 0; j <=4 - 2 * i; j++) {
System.out.print("*");
}
System.out.println();
}
完整的代码如下:把输出" # “改成输出” "就好了
/**
* 双循环打印菱形图案
* * A *
* *** BBB * *
* ***** CCCCC * *
* ******* DDDDDDD * *
* ***** EEEEE * *
* *** FFF * *
* * G *
*
* @author Monster丶ZF
* @version1.8
* @data 2019年4月9日
* @remakeTODO
*/
public class DoubleForDemo {
public static void main(String[] args) {
// 行、列-双循环
//外层循环控制行数、控制换行
for (int i = 0; i < 4; i++) {
for (int j = 0; j <= 2-i; j++) {
System.out.print(" "); //不要换行! 兄dei!
}
//打印完#后再打印*
for (int j = 0; j <=2 * i; j++) {
System.out.print("*");
}
System.out.println();
}
for (int i = 0; i < 3; i++) {
for (int j = 0; j <= i; j++) {
System.out.print(" "); //不要换行! 兄dei!
}
//打印完#后再打印*
for (int j = 0; j <=4 - 2 * i; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
A
BBB
CCCCC 和上面一样分为上下两部分,先用#代替空格,不赘述
DDDDDDD 可以先添加 char ch = 'A';这一行代码在前面;
EEEEE 然后可以观察到每行打印的字符与行数有关,i不同,则字符不同
FFF 即内循环结束换行之前来个ch++ 把*换成ch
G 上部分最后一次内循环结束时,ch++了,然后换行回去判断为假,到了下部分,第一次循环先打印一次ch,即E刚好接上
上部分代码:
char ch = 'A';
for (int i = 0; i < 4; i++) {
for (int j = 0; j <= 2-i; j++) {
System.out.print(" "); //不要换行! 兄dei!
}
//打印完#后再打印*
for (int j = 0; j <=2 * i; j++) {
System.out.print((char)(ch));
}
ch++; //每一行打印的字符和行数i有关,打印完一行就++变成下一个字符
System.out.println(); //外层循环控制换行
}
完整的代码如下:
/**
* 双循环打印菱形图案
* * A *
* *** BBB * *
* ***** CCCCC * *
* ******* DDDDDDD * *
* ***** EEEEE * *
* *** FFF * *
* * G *
*
* @author Monster丶ZF
* @version1.8
* @data 2019年4月9日
* @remakeTODO
*/
public class DoubleForDemo {
public static void main(String[] args) {
char ch = 'A';
for (int i = 0; i < 4; i++) {
for (int j = 0; j <= 2-i; j++) {
System.out.print(" "); //不要换行! 兄dei!
}
//打印完#后再打印*
for (int j = 0; j <=2 * i; j++) {
System.out.print((char)(ch));
}
ch++; //每一行打印的字符和行数i有关
System.out.println(); //外层循环控制换行
}
for (int i = 0; i < 3; i++) {
for (int j = 0; j <= i; j++) {
System.out.print(" "); //不要换行! 兄dei!
}
//打印完#后再打印*
for (int j = 0; j <=4 - 2 * i; j++) {
System.out.print(ch);
}
ch++;
System.out.println();
}
}
}
*
* * 可以观察到保留的*是每一行的最小值或者是最大值
* * 即在打印*前判断极值就可以了
* *
* *
* *
*
上部分代码:
for (int i = 0; i < 4; i++) {
for (int j = 0; j <= 2-i; j++) {
System.out.print(" "); //不要换行! 兄dei!
}
//打印完#后再打印*
for (int j = 0; j <=2 * i; j++) {
if(j == 0 || j == 2 * i){ // j是最小值或者最大值的时候,打印星号,否则的打印空格
System.out.print("*");
}else
System.out.print(" ");
//System.out.print("*");
}
System.out.println();
}
下部分也类似
完整代码:
/**
* 双循环打印菱形图案
* * A *
* *** BBB * *
* ***** CCCCC * *
* ******* DDDDDDD * *
* ***** EEEEE * *
* *** FFF * *
* * G *
*
* @author Monster丶ZF
* @version1.8
* @data 2019年4月9日
* @remakeTODO
*/
public class DoubleForDemo {
public static void main(String[] args) {
for (int i = 0; i < 4; i++) {
for (int j = 0; j <= 2-i; j++) {
System.out.print(" "); //不要换行! 兄dei!
}
//打印完#后再打印*
for (int j = 0; j <=2 * i; j++) {
if(j == 0 || j == 2 * i){ // j是最小值或者最大值的时候,打印星号,否则的打印空格
System.out.print("*");
}else
System.out.print(" ");
//System.out.print("*");
}
System.out.println();
}
for (int i = 0; i < 3; i++) {
for (int j = 0; j <= i; j++) {
System.out.print(" "); //不要换行! 兄dei!
}
//打印完#后再打印*
for (int j = 0; j <=4 - 2 * i; j++) {
if(j == 0 || j == 4 - 2 * i){ // j是最小值或者最大值的时候,打印星号,否则的打印空格
System.out.print("*");
}else
System.out.print(" ");
//System.out.print("*");
}
System.out.println();
}
}
}