在Java中如何调用函数用*号打印菱形
楼主已经学习Java半个月左右了,目前正在学习JavaSE,遇到了用型号*
打印三角形的情况,首先是这种情况
这种三角形还是比较简单的,可以用嵌套for循环解决,但是,当我遇到用*
打印菱形的时候,就像这种情况,
就让我很是头疼,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的嵌套循环,调用函数逻辑简单,可读性好。