/* 程序问题注释开始
-
程序的版权和版本声明部分
-
Copyright © 2020,湖南工程职业技术学院信息工程学院学生
-
文件名称: 蓝桥杯赛题
-
作 者: 李 斌
-
完成日期: 2020 年 04 月 13日
-
对任务及求解方法的描述部分
-
问题描述
给定正方形边长width,如图按规律输出层层嵌套的正方形图形。
注意,为让选手方便观看,下图和样例输出均使用“ _ ”代替空格,请选手输出的时候使用空格而不是“ _ ”。 -
样例输入
6 -
样例输出
-
输入格式
仅一行一个整数width。 -
输出格式
按规律输出图形,不要输出多余空格。 -
样例输入
10 -
样例输出
-
程序问题注释结束
*/
//2020.04.13 22.20
package 套正方形;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO 自动生成的方法存根
Scanner in=new Scanner(System.in);
//用户请输入正方形边长
int width=in.nextInt();
//标志是否为基数行、基数列,0为否、1为是
int flag=0;
//存储当前行当前个数串
String str="";
//存储前半部分字符串
String [] arr=new String[width/2];
//循环行的一半
for (int i = 0; i < width/2; i++)
{
//存储当前行前半部分后部的字符
String str1="";
//判断当前行当前元素值是否是基数列
if(flag==0)
{
//偶数位为*号
str+="*";
//循环当前行前半部分后部的字符
for(int k=0;k<width/2-1-i;k++)
{
//前行前半部分后部的字符为*号
str1+="*";
}
//下一位位基数位
flag=1;
}
else
{
//基数位为空格
str+=" ";
//循环当前行前半部分后部的字符
for(int k=0;k<width/2-1-i;k++)
{
//前行前半部分后部的字符为空格
str1+=" ";
}
//下一位为偶数位
flag=0;
}
//组当前行串
String str2=new StringBuffer(str).reverse().toString();
//数组存储当前行串
arr[i]=str+str1+str1+str2;
}
//输出上半部分
for(int i=0;i<width/2;i++)
{
//正向输出
System.out.println(arr[i]);
}
//输出下半部分
for(int i=0;i<width/2;i++)
{
//反向输出
System.out.println(arr[width/2-1-i]);
}
}
}
运行结果1:
运行结果2: