文章格式——解题报告

来源:互联网 发布:mac西柚色口红 编辑:程序博客网 时间:2024/04/28 01:55
题目描述
编写程序实现将一段文章格式化打印出来。打印时每行的长度为20个字符。
如果一行的最后一个单词超过了本行的20个字符的范围,则应把它移到下一行。
另外在每个单词之间增加一些空格,以便使每行的末尾准确地处在第20个位置处。


输入描述
输入n个单词(连续输入,每个单词不能超过20个字母,单词间用空格隔开,但不
要人为转行,也就是说如果输入的单词超过一行也不要按Enter)


输出描述
将上面n个单词分行打印,每行20个字符,如果一行只能放一个单词则单词后用空格填充,

若一行可放多个单词,则末尾必须为单词,且一个单词不能跨行输出。


解题报告:

简单题,细心考虑到各种情况即可。


import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class N09TextForMat {public static void main(String[] args) throws IOException {BufferedReader in =new BufferedReader(new InputStreamReader(System.in));String s;s=in.readLine();String[] result=s.split(" ");int[][] print=new int[result.length][s.length()];int count =20;int i,j=0,k=0;for(i=0;i<result.length;i++){if(result[i].length()>count){String str=StrReturn(result,print[j],k);System.out.println(str);k=0;j++;count=20;}print[j][k++]=i;count=count-(result[i].length()+1);}String str=StrReturn(result,print[j],k);System.out.println(str);}private static String StrReturn(String[] result, int[] pri,int k) {if(k==1){return result[pri[0]];}int length=0;String str = "";for(int i=0;i<k;i++){length+=result[pri[i]].length();}int differ=20-length;int consult=differ/(k-1);int remainder=differ%(k-1);for(int i=0;i<k;i++){str+=result[pri[i]];if(i<k-1){if(i<remainder){for(int j=0;j<=consult;j++){str+=" ";}}else{for(int j=0;j<consult;j++){str+=" ";}}}}return str;}}


原创粉丝点击