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

时间:2020-8-30 作者:admin


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


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

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

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

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

就让我很是头疼,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的嵌套循环,调用函数逻辑简单,可读性好。

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。