題目描述:字符串的輸入輸出處理。
輸入:第一行是一個正整數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"); } }
}