题目描述:字符串的输入输出处理。
输入:第一行是一个正整数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");
}
}
}