经典题:用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