题目描述:字符串的输入输出处理。
输入:第一行是一个正整数N,最大为100。之后是多行字符串(行数大于N), 每一行字符串可能含有空格,字符数不超过1000。
输出:先将输入中的前N行字符串(可能含有空格)原样输出,再将余下的字符串(不含有空格)以空格或回车分割依次按行输出。每行输出之间输出一个空行。
样例输入:
2
www.dotcpp.com DOTCPP
A C M
D O T CPP
样例输出:
www.dotcpp.com DOTCPP
A C M
D
O
T
CPP
解题思路:
先输入数字N,之后先用一个字符串数组firstNLines把前N行字符串记录起来,然后用另一个字符串数组remainingLines将余下的几行字符串记录下来。
注意!输入终止不是以回车键Enter为结尾的,因为用户每输入一行字符串都会点一次回车键Enter,所以如果以回车键为输入终止,用户只能输入一行字符串,这显然不符合题目要求。而如果不考虑输入终止,每输入一行字符串,便当即将该字符串打印出来,显然也无法得到题目要求的效果。
故,此处考虑以单行出现的英文逗号","作为输入终止符。
代码如下:
import java.util.*;
public class StringProcessing { public static void main(String[] args) {Scanner input=new Scanner(System.in); ArrayList<String> firstNLines=new ArrayList<>(); int N=input.nextInt(); input.nextLine(); for(int i=0;i<N;i++){ String line=input.nextLine(); firstNLines.add(line); } ArrayList<String> remainingLines=new ArrayList<>(); while(true){ String line=input.nextLine(); if(line.equals(",")){ break; } remainingLines.add(line); } for(String line : firstNLines){ System.out.println(line+"\n"); } for(String line : remainingLines){System.out.println(line.replaceAll("\\s+","\n\n")+"\n"); } }
}