Java打印各种图形:矩形、三角形、99乘法表、菱形、空心菱形、杨辉三角
1 打印矩形
任意n行m列的矩形
******
******
******
******
Scanner scanner = new Scanner(System.in);
int i = scanner.nextInt();
int j = scanner.nextInt();
for (int k = 0; k < i; k++) {
for (int l = 0; l < j; l++) {
System.out.print("*\t");
}
System.out.println();
}
2 打印直角三角形
任意行数为n的上直角三角,下直角三角,例如:
*
**
***
****
*****
Scanner scanner = new Scanner(System.in);
int i = scanner.nextInt();
for (int k = 0; k < i; k++) {
for (int j = 0; j < k + 1; j++) {
System.out.print("*\t");
}
System.out.println();
}
3 打印直角三角形二
行数为n的如下图形
*
***
*****
*******
Scanner scanner = new Scanner(System.in);
int i = scanner.nextInt();
for (int k = 0; k < i; k++) {
for (int j = 0; j < k*2 + 1; j++) {
System.out.print("*");
}
System.out.println();
}
4 打印99乘法表
使用”\t”可以美化格式,表示占用一个制表符(tab) 的空位置。
for (int i = 1; i < 10; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(j + "*" + i + "=" + (j * i) + "\t");
}
System.out.println();
}
4 打印菱形
行数为n,奇数行
Scanner scanner = new Scanner(System.in);
//行数
int i = scanner.nextInt();
for (int j = 0; j < i; j++) {
// 空白
for (int k = 0; k < Math.abs(i / 2 - j); k++) {
System.out.print(" ");
}
// *
for (int k = 0; k < i - 2 * Math.abs(i / 2 - j); k++) {
System.out.print("*");
}
System.out.println();
}
5 打印空心菱形
行数为n,奇数行
@Test
public void test10() {
Scanner scanner = new Scanner(System.in);
//行数
int i = scanner.nextInt();
for (int j = 0; j < i; j++) {
// 空白
for (int k = 0; k < Math.abs(i / 2 - j); k++) {
System.out.print(" ");
}
// *+空白
for (int k = 0; k < i - 2 * Math.abs(i / 2 - j); k++) {
if (k == 0 || k == i - 2 * Math.abs(i / 2 - j) - 1) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
System.out.println();
}
}
6 打印杨辉三角
提示:使用二维数组
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
.........
方法一
Scanner scanner = new Scanner(System.in);
int i = scanner.nextInt();
//新建外层数组.其长度为输入的值
int[][] arr1 = new int[i][];
//j: 每个内层数组的长度
for (int j = 1; j <= i; j++) {
//对应的内层数组
int[] arr2 = new int[j];
//将内层数组添加到外层数组的对应索引位置
arr1[j - 1] = arr2;
//为内层数组的每个索引元素赋值
for (int i1 = 0; i1 < arr2.length; i1++) {
if (i1 == 0) {
//首位
arr2[i1] = 1;
} else if
(i1 == arr2.length - 1) {
//末位
arr2[i1] = 1;
} else {
//中间其他位置 上一个内层数组的前一个索引和对应索引位的值的和
arr2[i1] = arr1[j - 2][i1 - 1] + arr1[j - 2][i1];
}
}
}
//遍历
for (int[] ints : arr1) {
for (int anInt : ints) {
System.out.print(anInt);
}
System.out.println();
}
方法二
Scanner sc = new Scanner(System.in);
int i1 = sc.nextInt();
int[][] arr = new int[i1][i1];
for (int i = 0; i < arr.length; i++) {
arr[i][0] = 1;
arr[i][i] = 1;
}
for (int i = 2; i < arr.length; i++) {
for (int j = 1; j < i; j++) {
arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
}
}
//遍历输出
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j <= i; j++) {
System.out.print(arr[i][j] + "\t");
}
System.out.println();
}