回型嵌套

题目:

从标准输入获得一个整数n(1<n<100)
程序则生成嵌套着的回字型星号方框。其最外层方框的边长为n

例如:
输入:
5
程序输出:

*****
*     *
* *  *
*     *
*****

输入:6
程序输出:
******
*       *
* **  *
* **  *
*       *
******

思路:

思路:new一个二维char数组,最外层方框的边长为n,数组行列都为n,
        由于用new分配内存所以要清空数组,给数组赋值,给最外围赋上*号,再用递归,输出里面的回型,最后显示数组。

代码:

import java.util.Scanner;

//by小方 2017.0330    
public class Test2 {
    
    // 保留数组长度,初始化数组为空数组  
    static void clear(char[][] c){  
        for(int i=0;i<c.length;i++){  
            for(int j=0;j<c.length;j++){  
                c[i][j] = ' ';  
            }  
        }  
    } 
        // 赋值
    static void fuzhi(char[][]c,int n,int begin){
        if(begin>=n) return ;
        // 赋值第一行为'*'    上
        for(int i=begin;i<n;i++){
            c[begin][i]='*';
        }
        // 赋值最后一行为'*'   下
        for(int i=n-1;i>=begin;i--){
            c[n-1][i]='*';
        }
        // 赋值左一列为'*'    左
        for(int i=begin;i<n;i++){
            c[i][begin]='*';
        }
        // 赋值右一列为'*'    右
        for(int i=n-1;i>=begin;i--){
            c[i][n-1]='*';
        }
        //范围缩小2 ,起始位置加2
        fuzhi(c,n-2,begin+2);
    }
    
    // 显示数组 
     static void show(char[][] x){
         for(int i=0;i<x.length;i++){
             for(int j=0;j<x[i].length;j++){
                 System.out.print(x[i][j]);
             }
             System.out.println();
         }
     }
    public static void main(String[] args) {
        while(true){
            try{
                Scanner scan=new Scanner(System.in);
                System.out.println("请输入一个整数n(1<n<100):");
                String s=scan.nextLine().trim();
                //退出
                if(s.equals("exit")) break;
                int n=Integer.parseInt(s);
                //不符合条件抛异常
                if(n<=1||n>=100) throw new Exception();
                char[][] c = new char[n][n];     
                clear(c);     
                fuzhi(c,n,0);
                show(c);  
            }catch(Exception e){
                System.out.println("输入无效");
            }
        }
        
    }

}

运行结果:

posted @ 2017-04-01 15:25  小汛  阅读(163)  评论(0编辑  收藏  举报