Java使用多重for循环打印实心三角形,倒立三角形以及空心菱形
使用双重for循环打印倒立三角形和菱形算是在循环嵌套里面,自我感觉比较难的第一个程序
这是本次要打印的目标:
打印上图实心三角形思路如下:
1. 先打印左边的空格
2. 再打印空格后边的符号*
3. 规律:第一行有一个*
第二行有三个*
第三行有五个*
...
每一行都有2 * i - 1 个*
故打印*号时,可以选择 <= 2 * i -1 或者 < 2 * i
// 代码实现如下 Java
/**
* 1. 通过Scanner从键盘获取用户自定义输入的三角型行数
* 2. 再通过循环先打印出空格
* 3. 最后打印出符号*
*/
Scanner myScanner = new Scanner(System.in);
int line = myScanner.nextInt(); // 获取用户输入的列数
for (int i = 1; i <= line ; i++) {
// 先打印空格
for (int k = 0; k < line - i; k++) {
System.out.print(" "); //这里需要注意:println是自带换行的,故要换成print取消自动换行
}
// 再打印符号*
for (int j = 1; j < 2 * i; j++) {
System.out.print("*");
}
// 最后在打印完一行之后,就换行 println()自带换行功能
System.out.println();
}
结果如下:
打印进阶:打印出空心三角形
进阶目标:
思路和打印实心三角形一样,只不过将打印三角形内部的符号*换成空格
// 代码实现和上述相同,只是在打印内部符号的时候添加判断,判断打印的是否为三角形的两边以及底部,代码如下 Java:
/**
* 1. 通过Scanner从键盘获取用户自定义输入的三角型行数
* 2. 再通过循环先打印出空格
* 3. 最后打印出符号*
* 因为三角形左右两边的符号是对称的,需要 * 2来表示
* 参数说明:
* j == 1 表示打印完空格后,三角形左边的边
* j == 2 * i - 1 表示打印完内部空格后的最右边的边
* i == line 表示打印最后一行,底部的全部符号
*/
Scanne