java输入菱形边长,输出菱形

问题描述:

有一个类Rhombus.java,可以通过main函数显示菱形图案。

    1.通过 Scanner 类来获取用户的输入。

    2.需要使用嵌套的For语句,并使用System.out。print()来打印字符。

    3.菱形图案的边长由Scanner获取的边长来指定。

例如:获取number=4得到如下图形

                           *

                         * * *

                       * * * * *

                     * * * * * * *

                       * * * * *

                         * * *

                           *

问题分析

由于for循环嵌套只能增或者减。不能增后减、减后增。因此整个菱形问题可以先分为两部分:上部分和下部分。

观察菱形发现输出菱形,是由空格和“*”组成,且成递增(递减)因此又可分为空格部分和“*”部分。按照此思路问题得以解决。

import java.util.Scanner;

public class Rhombus {
public static void main(String[] args) {
	Scanner sc=new Scanner(System.in);
	System.out.println("请输入菱形的边长");
	int number=sc.nextInt();
	//主要分为上下部分;
	//每个部分又分为空格部分和*部分
	for(int i =1;i<=number;i++)
	{
		for(int j=1;j<=number-i;j++)
			 //先打印空格后打印*
			//空格个数为number-i
		{
			System.out.print(" ");
		}
		for(int k=number-i+1;k<=number+i-1;k++)
			//*个数为number+i-1-(number-i+1)个
			//number-i+1为*起始位置,number+i-1为结束位置(位置相同则为一个)
		{
			System.out.print("*");
		}
		System.out.println();
	}
	for(int i =number+1;i<2*number;i++)
	{
		for(int j=1;j<=(i-number);j++)
		{
			System.out.print(" ");
			//空格结束位置后一位就是*起始位置
		}
		for(int k=(i-number+1);k<3*number-i;k++)
			//*位置起始为(i-number+1)截止位置为 3*number-i;
                       //*数为4*number-2*i+1
			//除去中心线外每边的*个数为2*number-i,
                       //所以截止位置就应该是中心线加上一边*的个数
		{
			System.out.print("*");
		}
		System.out.println();
	}

猜你喜欢

转载自blog.csdn.net/HY845638534/article/details/83956911
今日推荐