把字符串输入到表格里


在格子中输出字符串

在格子中显示
用户输入一个字符串,把它显示在格子中。
要求:
水平左对齐,垂直顶端对齐。
格子的宽度和高度是先定好的,比如:30 x 7
如果字符串太长,则需要折行显示。
如果实在太长,到最后一行都装不下,则截断它,使之不破坏格子边框。
可能的情景:

情景1

情景2

我们可以定义一个大的字符型数组 char[][] cc,该数组的范围就是表格的大小。

先把数组的四个角赋值为 '+',第一行最后一行的其他位置赋值为 '-',第一列和最后一列赋值为 '|'.这样,表格的框架就打好了。

表格打好后,只需要把输入的串,拆分成字符装入上面定义的数组中即可。

例如:开一个10行6列的数组,把串"1234567890"输入到表格中,在数组中存在的示意图如下:

实现该过程的程序如下:


//2017.03.17  by 迷糊狐狸
import java.util.Scanner;

public class MyTest {
    
    static Scanner scan = new Scanner(System.in);
    
    //开一个与所需表格等容量的数组
    //先把表格框架打好
    //然后把字符串输入进去
    static void block(int w, int h, String s){
        char[][] cc = new char[h][w];
        cc[0][0] = '+';
        cc[h-1][0] = '+';
        cc[0][w-1] = '+';
        cc[h-1][w-1] = '+';
        for(int i=0; i<h-2; i++){
            cc[i+1][0] = '|';
            cc[i+1][w-1] = '|';
        }
        for(int i=0; i<w-2; i++){
            cc[0][i+1] = '-';
            cc[h-1][i+1] = '-';
        }
        
        str_put_block(cc, s);
        
        show(cc);
    }
    
    //把字符串拆分成字符,加入到数组中
    //从数组中第一个元素不为零的位置开始加起,
    //避开元素已经不为零的位置
    //这里是从数组的第二行第二列开始,
    //避开第一行最后一行第一列最后一列的所有位置
    //直到全部加进去结束
    static void str_put_block(char[][] cc, String s){
        for(int i=1; i<cc.length-1; i++){
            for(int j=1; j<cc[i].length-1; j++){
                if(s.length()==0) break;
                cc[i][j] = s.charAt(0);
                s = s.substring(1);
            }
        }
    }
    
    //当数组中的元素为零时,输出空格
    //不为零时输出该元素
    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("请输入所需表格宽度width:");
                int w = Integer.parseInt(scan.nextLine().trim());
                if(w<3) throw new Exception(); 
                
                System.out.println("请输入所需表格高度hight(尽可能大一点):");
                int h = Integer.parseInt(scan.nextLine().trim());
                if(h<3) throw new Exception(); 
                
                System.out.println("请输入字符串s(请注意不要超过表格所能承载的长度):");
                String s = scan.nextLine().trim();
                if(s.length()>(w-2)*(h-2)) throw new Exception(); 
                    
                block(w, h, s);
                break;
                    
            }catch(Exception e){
                System.out.println("输入有误!");
            }
        }

运行结果如下:

正确输入结果示范如下:

错位输入示范结果如下:

优质内容筛选与推荐>>
1、反射调用性能比较(附源码)
2、ORA-39126 KUPW$WORKER.PUT_DDLS [TABLE_STATISTICS]错误
3、C#加密解密(DES,AES,Base64,md5,SHA256,RSA,RC4)
4、《深入理解计算机系统》☞hello world背后的故事
5、 C#文件上传类(转)


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn