经典题:用Java打印空心菱形

导读:本篇文章讲解 经典题:用Java打印空心菱形,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

经典题:用Java打印空心菱形

本题是在打印空心金字塔的基础上进行的,不会的点击下面的链接:

经典题:用Java打印空心金字塔

(1)打印无底空心金字塔

输出如下:

开始运行...
请输入层数
6
     *
    * *
   *   *
  *     *
 *       *
*         *
运行结束。

打印空心金字塔的代码

import java.util.Scanner;
public class Stars{ 
	public static void main(String[] args){
		Scanner myScanner = new Scanner(System.in);
		int i;
		int j;
		int k;
		System.out.println("请输入层数");
		int level = myScanner.nextInt();
		for (i = 1; i <= level; i++) {
			for (k = 1; k <= level - i; k++) {
				System.out.print(" ");
			}
			for (j = 1; j <= 2 * i - 1; j++) {
				if (j == 1 || j == 2 * i - 1 || i == level) {
					System.out.print('*');
				}else {
					System.out.print(" ");
				}
			}
			System.out.println();
		}
	}
}

从上面代码可知,如果想打印无底空心金字塔,我们只需要将if中i==level条件去掉。

打印空心无底金字塔的代码

import java.util.Scanner;
public class Stars{ 
	public static void main(String[] args){
		Scanner myScanner = new Scanner(System.in);
		int i;
		int j;
		int k;
		System.out.println("请输入层数");
		int level = myScanner.nextInt();
		for (i = 1; i <= level; i++) {
			for (k = 1; k <= level - i; k++) {
				System.out.print(" ");
			}
			for (j = 1; j <= 2 * i - 1; j++) {
				if (j == 1 || j == 2 * i - 1) {
					System.out.print('*');
				}else {
					System.out.print(" ");
				}
			}
			System.out.println();
		}
	}
}

(2)打印V字形

输出案例:

开始运行...
请输入
5
*       *
 *     *
  *   *
   * *
    *

运行结束。

首先,我们需要打印空格,第一行0空格,第二行1空格,第三行2空格,以此类推。
k变量表示空格,i变量表示行数,j变量表示列数,level变量表示层数。

for循环嵌套如下:

for (i = 1; i <= level; i++) {
	for (k = 1; k <= i - 1; k++) {
		System.out.print(" ");
	}
	System.out.printin();
}

然后打印V字形,我们发现如果V字形为5层,第一层打印第1个和第9个,第二层打印第1个和第7个,第三层打印第1个和第5个,第四层打印第1个和第3个,第五层打印第1个。以此类推,第i层打印第1个和第2*(5-i)+1个。
如果用level代替5,就变成j=1和j=2*(level-i)+1。这是if的判断条件,符合就打印*,不符就打印空格。
在循环中,j从1开始,到2*(level-i)+1结束。

代码如下:

import java.util.Scanner;
public class C {
    public static void main(String[] args){
		Scanner myScanner = new Scanner(System.in);
		int i;
		int j;
		int k;       
        System.out.println("请输入");
		int level = myScanner.nextInt();
        for (i = 1; i <= level; i++) {
			for (k = 1; k <= i - 1; k++) {
				System.out.print(" ");
			}
			for (j = 1; j <= 2 * (level - i) + 1; j++) {
				if (j == 1 || j == 2 * (level - i) + 1) {
					System.out.print('*');
				}else {
                    System.out.print(" ");
                }
			}
			System.out.println();
		}
    }
}

(3)打印空心菱形

将(1)和(2)for循环上下合并。

代码如下:

import java.util.Scanner;
public class Stars {
    public static void main(String[] args){
		Scanner myScanner = new Scanner(System.in);
		int i;
		int j;
		int k;
		System.out.println("请输入菱形的边长");
		int level = myScanner.nextInt();
		for (i = 1; i <= level; i++) {
			for (k = 1; k <= level - i; k++) {
				System.out.print(" ");
			}
			for (j = 1; j <= 2 * i - 1; j++) {
				if (j == 1 || j == 2 * i - 1) {
					System.out.print('*');
				}else {
					System.out.print(" ");
				}
			}
			System.out.println();
		}
        for (i = 1; i <= level; i++) {
			for (k = 1; k <= i - 1; k++) {
				System.out.print(" ");
			}
			for (j = 1; j <= 2 * (level - i) + 1; j++) {
				if (j == 1 || j == 2 * (level - i) + 1) {
					System.out.print('*');
				}else {
					System.out.print(" ");
				}
			}
			System.out.println();
		}
    }
}

输出案例:

开始运行...
请输入菱形的边长
5 
    *
   * *
  *   *
 *     *
*       *
*       *
 *     *
  *   *
   * *
    *

运行结束。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之家整理,本文链接:https://www.bmabk.com/index.php/post/120198.html

(0)
seven_的头像seven_bm

相关推荐

发表回复

登录后才能评论
极客之家——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!