• 把字符串输入到表格里


    在格子中输出字符串

    在格子中显示
    用户输入一个字符串,把它显示在格子中。
    要求:
    水平左对齐,垂直顶端对齐。
    格子的宽度和高度是先定好的,比如: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("输入有误!");
                }
            }
    
    
    
     

     运行结果如下:

    正确输入结果示范如下:

    错位输入示范结果如下:

  • 相关阅读:
    【RS】Automatic recommendation technology for learning resources with convolutional neural network
    卷积神经网络的入门
    Debug 路漫漫-10:AttributeError: 'Embedding' object has no attribute 'get_shape'
    Debug 路漫漫-09:构建CNN时维度不一致问题
    Debug 路漫漫-08:Keras 版本升级函数变换导致的问题
    springboot 过滤器、拦截器、消息转换器、切片执行顺序 及区别
    java InputStream读取数据问题
    Springboot 2-OAuth 2修改登录加密方式
    Spring Boot Security Oauth2之客户端模式及密码模式实现
    oauth2.0通过JdbcClientDetailsService从数据库读取相应的配置
  • 原文地址:https://www.cnblogs.com/liyuanba/p/2017-03-17.html
Copyright © 2020-2023  润新知