在java中如何打出三层星号_在Java中如何调用函数用星号*打印菱形

在Java中如何调用函数用*号打印菱形

楼主已经学习Java半个月左右了,目前正在学习JavaSE,遇到了用型号*打印三角形的情况,首先是这种情况

959769d3209c6a9c77533f124f6a94ff.png

这种三角形还是比较简单的,可以用嵌套for循环解决,但是,当我遇到用*打印菱形的时候,就像这种情况,

992874b727bed96ffc3bdfd32cf7e61e.png

就让我很是头疼,for循环太多,脑袋一时扭转不过来,最后成功打印,但是代码繁琐,可读性差,但是,当我今天学到了调用函数的时候,此时,突然想到可以用调用函数来实现简单的逻辑代码完成目标。

一、用单纯for嵌套循环来打印三角形和菱形

首先,用*打印三角形或菱形并不是单纯的只打印*,而是首先打印空格,然后再打印*,然后再执行换行操作,假设你们都已经有了Java基础,所以直接上代码。

1.打印三角形

import java.util.Scanner;

public class HomeWork_2 {

public static void main(String[] args){

Scanner input = new Scanner(System.in);

System.out.println("请输入要打印的行数:");

int n = input.nextInt();

for (int i=1;i<=n;i++){

for(int j=1;j<=n-i;j++){

System.out.print(" ");

}

for (int k=1;k<=2*i-1;k++){

System.out.print("*");

}

System.out.println();

}

}

}

这个虽然嵌套了两个for循环,但是对于学过Java基础的人来说,还是不难的,但是代码太多,可读性很差,不能一眼看到代码的目的。

2.打印菱形

import java.util.Scanner;

public class HomeWork4 {

public static void main(String[] args){

Scanner input = new Scanner(System.in);

int n;

for(;;){

System.out.println("请输入一个奇数");

n =input.nextInt();

if(n%2==1){

break;

}

}

int n1=(n+1)/2;

for (int i=1;i<=n1;i++){

for(int j=1;j<=n1-i;j++){

System.out.print(" ");

}

for(int k=1;k<=2*i-1;k++){

System.out.print("*");

}

System.out.println();

}

int n2=n1-1;

for (int i=1;i<=n2;i++){

for(int j=1;j<=i;j++){

System.out.print(" ");

}

for(int k=1;k<=n-2*i;k++){

System.out.print("*");

}

System.out.println();

}

}

}

虽然这个对基础很好的人来说不是很难,但是博主当初写这段代码的时候还是死了好多脑细胞啊,摸摸头,手上又莫名地多了几根头发。从这段代码来看,for循环太多,让人看得很是头疼,虽然,它能达到我们打印菱形的目的,但是可读性太差了。所以为了烧掉些头发。

下面就是本博文的重点了

二、调用函数来打印三角形和菱形

博主上午刚学到调用函数,就突然想到为何不可调用函数来打印三角形或者菱形呢,所以就跃跃欲试了。直接上干货。

1.用调用函数打印三角形

import java.util.Scanner;

public class HomeWork_3 {

public static void main(String[] args){

Scanner input = new Scanner(System.in);

System.out.println("请输入要打印的行数:");

int n = input.nextInt();

for(int i=1;i<=n;i++){

blank(n-i); //调用打印n-i个空格的方法

star(2*i-1); //调用打印2*i-1个*的方法

System.out.println();

}

}

public static void blank(int n){ //这是打印n个空格的方法

for (int i=1;i<=n;i++){

System.out.print(" ");

}

}

public static void star(int n){ //这是打印n个星的方法

for (int i=1;i<=n;i++){

System.out.print("*");

}

}

}

首先定义两个函数,一个是打印空格的函数,需要多少空格就打印多少空格的方法,一个是打印*的函数,需要多少星就打印多少星的方法。直接在调用函数括号里输入要打印的个数就可以了。运用调用函数减少了for循环的嵌套,而且可读性非常好。

2.用调用函数打印菱形

import java.util.Scanner;

public class HomeWork4_1 {

public static void main(String[] args){

Scanner input = new Scanner(System.in);

int n;

for(;;){

System.out.println("请输入一个奇数");

n =input.nextInt();

if(n%2==1){

break;

}

}

int up=n/2+1;

int down=n/2;

for(int i=1;i<=up;i++){ //1. 首先打印上半部分

blank(up-i); //调用打印n个空格的方法

star(2*i-1); //调用打印n个*的方法

System.out.println();

}

for(int i=1;i<=down;i++){ //2. 其次打印下半部分

blank(i);

star(2*down+1-2*i);

System.out.println();

}

}

public static void blank(int n){ //这是印n个空格的方法

for (int i=1;i<=n;i++){

System.out.print(" ");

}

}

public static void star(int n){ //这是打印n个星的方法

for (int i=1;i<=n;i++){

System.out.print("*");

}

}

首先把菱形分成上下两个部分,一个正三角形和一个倒三角形,当然,打印一个菱形需要输入一个奇数才能实现,所以在打印之前要有一个输入奇数的循环。然后就是直接调用打印空格和*的函数就行了。相比for的嵌套循环,调用函数逻辑简单,可读性好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值