1.左下三角
思路:使用双重循环,外层循环控制行,内层循环控制列
public class Exercise {
public static void main(String[] args) {
int n = 5;
for(int i = 1; i <= n; i++){
for(int j = 1; j <= i; j++){
System.out.print("*");
}
System.out.println();
}
}
}
打印九九乘法表(以左下三角格式输出) 思路: 1.按行打印,需打印 9 行 2.使用双重循环 3.外层循环变量 i 控制行,范围[1-9] 4.内层循环变量 j 控制列,范围[1-i] 5.每行打印完需换行
public class Exercise {
public static void main(String[] args) {
for(int i = 1; i <= 9; i++){
for(int j = 1; j <= i; j++){
System.out.print(j + " * " + i + " = " + (j * i) +" ");
}
System.out.println();
}
}
}
2.右下三角
X XX XXX XXXX 第一行 空格数:3 X个数:1 第二行 空格数:2 X个数:2 第三行 空格数:1 X个数:3 第四行 空格数:0 X个数:4 空格数 = 总行数-行序数-1 (行序数从0开始) X个数 = 行序数
以右下三角格式输出 思路: 1.按行打印 2.每行先打印空格,再打印数据,再换行 关键点:将空格数与循环变量联系起来
public class Exercise {
public static void main(String[] args) {
int n = 5;
for(int i = 0; i < n; i++){
//空格
for(int j = 0; j < n-i-1; j++){
System.out.print(" ");
}
//打印*
for(int j = 0; j < i+1; j++){
System.out.print("X");
}
System.out.println();
}
}
}
3.正上三角 以正三角格式输出 X XXX XXXXX 第一行 空格数:2 X个数:1 第二行 空格数:1 X个数:3 第三行 空格数:0 X个数:5 空格数 = 总行数 - 行序数 - 1 (仅算一半的空格数) X个数 = 2 * 行序数 + 1
public class Exercise {
public static void main(String[] args) {
int n = 5;
for(int i = 1; i <= n; i++){
//空格
for(int j = 1; j <= n-i; j++){
System.out.print(" ");
}
//打印*
for(int j = 1; j <= 2*i-1; j++){
System.out.print("X");
}
System.out.println();
}
}
}
4.倒三角
***** *** * 从上往下依次为: 第三行 空格数:0 *个数:5 第二行 空格数:1 *个数:3 第一行 空格数:2 *个数:1 空格数 = 总行数 - 行序数 *个数 = 2 * 行数 - 1 思路: 从最后一行向上逐行打印,即行序数从上往下依次递减
public class Exercise {
public static void main(String[] args) {
int n = 5;
for (int i = n; i >= 0; i--) {
//空格
for (int j = 0; j < n - i; j++) {
System.out.print(" ");
}
//打印*
for (int j = 2 * i - 1; j > 0; j--) {
System.out.print("*");
}
System.out.println();
}
}
}
5.菱形
* *** ***** *** * 思路: 1.将整个菱形分为上下两部分,上半部分比下半部分多 1 行 2.上半部分按正上三角打印,下半部分按倒三角打印
public class Exercise {
public static void main(String[] args) {
int n = 5;
//上半部分
for(int i = 1; i <= (n / 2) + 1; i++){
//空格
for(int j = 1; j <= (n / 2) + 1 - i; j++){
System.out.print(" ");
}
//打印*
for(int j = 1; j <=(2 * i) - 1 ; j++){
System.out.print("*");
}
System.out.println();
}
//下半部分
for (int i = n / 2; i >= 1; i--) {
//空格
for (int j = 1; j <= n / 2 + 1 - i; j++) {
System.out.print(" ");
}
//打印*
for (int j = 2 * i - 1; j >= 1; j--) {
System.out.print("*");
}
System.out.println();
}
}
}
总结: 1.空格数 n-i-1 (从0开始) 2.每行打印的*个数应与行序数、总行数关联起来