文章格式——解题报告

题目描述
编写程序实现将一段文章格式化打印出来。打印时每行的长度为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;
	}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值