/*
***********
* *
* ******* *
* * * *
* * *** * *
* * * * * *
* * *** * *
* * * *
* ******* *
* *
***********
观察这个图形,它是由一系列正方形的星号方框嵌套而成。
在上边的例子中,最外方框的边长为11。
本题的任务就是从标准输入获得一个整数n(1<n<100)
程序则生成嵌套着的回字型星号方框。其最外层方框的边长为n
例如:
输入:
5
程序输出:
*****
* *
* * *
* *
*****
输入:6
程序输出:
******
* *
* ** *
* ** *
* *
******
*/
import java.util.Scanner;
public class Demo04 {
// 显示数组
public static void show(char[][] c){
for(char[] x:c){
for(char y:x){
System.out.print(y);
}
System.out.println();
}
}
// 初始化数组为空数组
public static void init(char[][] c){
for(int i=0;i<c.length;i++){
for(int j=0;j<c.length;j++){
c[i][j] = ' ';
}
}
}
public static void oper(char[][] c,int n,int start){
if(start>=n) return;
for(int i=start;i<n;i++){ // 赋值第一行为'*' 上
c[start][i] = '*';
}
for(int i=start;i<n;i++){ // 赋值最后一行为'*' 下
c[n-1][i] = '*';
}
for(int i=start;i<n;i++){ // 赋值左一列为'*' 左
c[i][start] = '*';
}
for(int i=start;i<n;i++){ // 赋值右一列为'*' 右
c[i][n-1] = '*';
}
oper(c,n-2,start+2); // 矩阵范围 缩小2 ,起始赋值位置 加2
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("输入获得一个整数n(1<n<100)");
int n = scan.nextInt();
char[][] c = new char[n][n];
init(c); // 初始化数组为空数组
oper(c,n,0); // 赋值
show(c); // 显示数组
}
}
运行结果:
输入获得一个整数n(1<n<100)
13
*************
* *
* ********* *
* * * *
* * ***** * *
* * * * * *
* * * * * * *
* * * * * *
* * ***** * *
* * * *
* ********* *
* *
*************