zoukankan      html  css  js  c++  java
  • 用 ‘+’ ‘-’ ‘|’ 做边界,画出多个表格

    1、控制台画格

    用户输入格子的行数、列数、每个格子的宽度、高度,画出一组格子。

    如下:

    先画一个宽(w) 4,高(h) 1 的格子(边界不算在该格子的尺寸内),然后再把它画出 2 行(row),3 列(col)。

    以下程序是先开一个大的数组 char[][] cc = new char[row * (h+2)][col * (w+2)] 数组可以开的大一些,以防越界,以下程序是开的刚好的数组。

    找出单位格子的边界,以及每个格子的起始位置、终止位置,把他们在数组中的相应位置赋值为相应的‘+’、‘-’、‘|’即可,最后显示输出该数组即可。

    相应编程如下:

    // 2017-03-17  by 迷糊狐狸
    import java.util.Scanner;
    
    public class MyWork {
        
        static Scanner scan = new Scanner(System.in);
        
        //开一个数组,数组大小根据行数、列数以及单个表格的宽、高决定
        //以单个表格为单位画出所需表格数
        static void block(int row, int col, int w, int h){
            char[][] cc = new char[row * (h+2)][col * (w+2)];
            
            for(int i=0; i<row; i++){
                for(int j=0; j<col; j++){
                    one_block(cc, j*((w+2)-1), i*((h+2)-1), w+2, h+2);
                }
            }
            show(cc);
        }
        
        //确定每个表格的横、纵的起始位置已经画线宽度
        static void one_block(char[][] cc, int x, int y, int w, int h){
            draw_line_x(cc, x, y, w);
            draw_line_x(cc, x, y+h-1, w);
            draw_line_y(cc, x, y, h);
            draw_line_y(cc, x+w-1, y, h);
        }
        
        //每个表格的每条横线的两端为加号,中间为减号
        static void draw_line_x(char[][] cc, int x, int y, int len){
            cc[y][x] = '+';
            for(int i=0; i<len-2; i++)cc[y][x+i+1] = '-';
            cc[y][x+len-1] = '+';
        }
        
        //每个表格的每条纵线两端为加号,中间为竖线
        static void draw_line_y(char[][] cc, int x, int y, int wid){
            cc[y][x] = '+';
            for(int i=0; i<wid-2; i++)cc[y+i+1][x] = '|';
            cc[y+wid-1][x] = '+';
        }
        
        //显示出该数组
        static void show(char[][] cc){
            for(int i=0;i<cc.length;i++){
                for(int j=0;j<cc[i].length;j++){
                    System.out.print((cc[i][j]==0)? ' ' : cc[i][j]);
                }
            System.out.println();
            }
        }
    
        public static void main(String[] args) {
            while(true){
                try{
                    System.out.println("请输入表格行数:");
                    int row = Integer.parseInt(scan.nextLine().trim());
                    if(row<1) throw new Exception();
                    
                    System.out.println("请输入表格列数:");
                    int col = Integer.parseInt(scan.nextLine().trim());
                    if(col<1) throw new Exception();
                    
                    System.out.println("请输入单位表格的宽度:");
                    int width = Integer.parseInt(scan.nextLine().trim());
                    if(width<1) throw new Exception();
                    
                    System.out.println("请输入单位表格的高度:");
                    int height = Integer.parseInt(scan.nextLine().trim());
                    if(height<1) throw new Exception();
                    
                    block(row, col, width, height);
                    break;
                }catch(Exception e){
                    System.out.println("输入有误!");
                }
            }
    
        }
    
    }

     注意,用户在自行确定表格的行数、列数以及单位表格的宽度、高度时均不得小于 1,

    否则视为输入失误,将重新输入。

    程序运行结果如下:

    正确示例:

    错误示例1(输入的不是数字): 

    错误示例2(输入的数字小于1):

  • 相关阅读:
    洛谷——P1196 [NOI2002]银河英雄传说
    Bomb HDU
    LightOJ
    洛谷——P2657 [SCOI2009]windy数
    几校联考——day1题解
    CF997A Convert to Ones
    洛谷——P2574 XOR的艺术
    codevs 3164 质因数分解
    洛谷——P2865 [USACO06NOV]路障Roadblocks
    JS之ClassName属性使用
  • 原文地址:https://www.cnblogs.com/liyuanba/p/2017-03-18.html
Copyright © 2011-2022 走看看