A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© smhjx2006 中级黑马   /  2013-6-7 10:58  /  1063 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/**
*此程序实现了将文字竖排,但是如果文字中出现了标点符号,
*就会出现无法对齐的现象,请帮助解决!
*/

import java.util.*;
class  ValignDemo
{
       public static void main(String[] args)
       {
              Scanner console = new Scanner(System.in);
              System.out.println("请输入一行文字:");
              String str = console.nextLine();
              System.out.println("请输入行数:");
              int size = console.nextInt();
              System.out.println(valign(str,size));
       }
       //valign方法将输入的一行文字,按照输入的行数显示
       public static String valign(String str,int size)
       {
              int rows = size;//rows:行数
              int cols = str.length()/size;//cols:列数,但是"/"是取整数,不满一列的都不算,所以假设能整除
              if(str.length()%size!=0)//如果不能整除,说明有非满列的情况,所以要"+1"
              {
                     cols++;
              }
              char[] chs = new char[cols*rows];//定义字符数字
              int idx = 0;
              for(int i = cols-1;i>=0;i--)
              {
                     for(int j = 0;j< rows;j++)
                     {
                            if(idx == str.length())
                            {
                                   chs[j*cols+i]='~';
                            }
                            else
                            {
                                   chs[j*cols+i] = str.charAt(idx++);
                            }
                     }
              }
              String s = "";
              for(int i=0;i<chs.length;i++)
              {
                     s+=chs[i];
                     if((i+1)%cols==0)
                     {
                            s+='\n';
                     }
              }
              return s;
       }
}

评分

参与人数 1技术分 +1 收起 理由
曹睿翔 + 1 神马都是浮云

查看全部评分

2 个回复

倒序浏览
牛人   等待大神回答
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马