****使用java打印空心菱形和数字金字塔****
package report;
import java.util.Scanner;
public class Test3 {
/**
* 空心菱形和数字金字塔打印
*
* 分析:从简单到复杂,找规律
*
* @param args
*/
public static void main(String[] args) {
//demo1();
//demo2();
//demo3();
//demo4();
//demo5();
//打印一个空心菱形
/*
*
* *
* *
* *
* *
* *
* *
* *
*
*/
Scanner sc = new Scanner(System.in);
System.out.println("打印出一个空心菱形");
int n = sc.nextInt();
for (int i = 1; i <= n; i++) { //i表示空心菱形上半部分行数;类似于金字塔行数
for (int k = 1; k <= n - i; k++) { //k表示每行"*"号前面的空格数
System.out.print(" ");
}
for (int j = 1; j <= (2 * i) - 1; j++) { //j表示每行要打印的"*"号
if (j == 1 || j == (2 * i) - 1) {
System.out.print("*"); //如果要打印的"*"是第一个或最后一个则打印出来
} else {
System.out.print(" "); //如果要打印的"*"不是第一个或最后一个则打印空格
}
}
System.out.println();
}
//以上打印出来的是空心菱形的上半部分
for (int i = 1; i <= n - 1; i++) { //空心菱形下半部分的行数为n-1行;比如上半部分4行,则下半部分为3行才能构成菱形
for (int k = 1; k <= i ; k++) { //每行空格数
System.out.print(" ");
}
for (int j = 1; j <= 2 * (n - i) - 1; j++) {// 下半部分每行总的"*"数
if (j == 1 || j == 2 * (n - i) - 1) // 如果"*"处在第一和最后一位则打印出来
{
System.out.print("*");
} else
System.out.print(" "); // 如果"*"不是处在第一和最后一位则打印出空格
}
System.out.println();
}
}
private static void demo5() {
//打印一个空心金字塔
/*
*
* *
* *
* *
*********
*/
Scanner sc = new Scanner(System.in);
System.out.println("打出一个完整的金字塔(每个*号之间含有空格)");
int n = sc.nextInt();
for(int i = 1; i <= n; i++){
for (int k = 1; k <= (n - i); k++) {
System.out.print(" ");
}
for (int j = 1; j <= (2 * i) - 1; j++) {
if (i == 1 || i == n) { // 第一行和最后一行还是打出(2*i)-1个*
System.out.print("*");
} else if (j == 1 || j == (2 * i) - 1) {
System.out.print("*"); // 打印每行的第一个*和最后一个*
} else {
System.out.print(" ");
}
}
System.out.println();
}
}
private static void demo4() {
//打印倒立金字塔(每个*号之间含有空格(美观))
/*
* * * * * * * * *
* * * * * * *
* * * * *
* * *
*
*/
Scanner sc = new Scanner(System.in);
System.out.println("打出一个完整的金字塔(每个*号之间含有空格)");
int n = sc.nextInt();
for (int i = n; i >= 1; i--) {
for (int k = 2 * (n - i); k >= 1; k--) {
System.out.print(" ");
}
for (int j = (2 * i) - 1; j >= 1; j--) {
System.out.print("*");
System.out.print(" ");
}
System.out.println();
}
}
private static void demo3() {
//打印完整金字塔(每个*号之间含有空格(美观))
/*
*
* * *
* * * * *
* * * * * * *
* * * * * * * * *
*/
Scanner sc = new Scanner(System.in);
System.out.println("打出一个完整的金字塔(每个*号之间含有空格)");
int n = sc.nextInt();
for(int i = 1; i<= n; i++){
//还是找每行第一个*的左边空格数与行数的规律2*(n-i)
for (int k = 1; k <= 2 * (n - i); k++) {
System.out.print(" ");
}
for(int j = 1; j <= (2 * i) - 1; j++){
System.out.print("*");
System.out.print(" ");//加上这一行,调整空格
}
System.out.println();
}
}
private static void demo2() {
//打印完整金字塔(每个*号之间没有空格)
/*
*
***
*****
*******
*********
*/
Scanner sc = new Scanner(System.in);
System.out.println("打出一个完整的金字塔(每个*号之间没有空格)");
int n = sc.nextInt();
//分析:要找出每行第一个*距离最左边的距离,假设有n行,那么第一行距离最左边的距离就是n-1,第二行n-2
//i控制行数 j控制* k控制空格
for (int i = 1; i <= n; i++) {
for (int k = 1; k <= n-i; k++) {
System.out.print(" ");
}
for (int j = 1; j <= (2 * i) - 1; j++) {
System.out.print("*");
}
System.out.println();
}
}
private static void demo1() {
//打印半个金字塔
/*
*
**
***
****
*****
*/
Scanner sc = new Scanner(System.in);
System.out.println("请输入金字塔的行数:");
int n = sc.nextInt();
for(int i = 1; i <= n; i++){//从1开始
for (int j = 1; j <= i; j++) {
System.out.print("*");//这里一定要是print 不要换行 才能形成半个金字塔
}
System.out.println();
}
}
}
空心菱形和数字金字塔打印
最新推荐文章于 2024-04-26 17:52:21 发布