把字符串输入到表格里

在格子中输出字符串

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


 

 运行结果如下:

正确输入结果示范如下:

错位输入示范结果如下:

原文地址:https://www.cnblogs.com/liyuanba/p/2017-03-17.html