andy6804tw
3/28/2018 - 3:23 PM

[C_ST38-中] 字數統計

https://e-tutor.itsa.org.tw/e-Tutor/mod/programming/view.php?id=2691

題目有說道要去除標點符號,所以利用字串取代(replaceAll)將遇到的標點符號改為空字串,之後再使用字串切割(split)將字串切成陣列,最後在陣列走訪依序的計算每個單字的數量,比對單字是否存在時可以統一將單字轉成小寫(toLowerCase)

import java.util.*;

public class Main {

	public static void main(String[] args) {
		Scanner scn=new Scanner(System.in);
		String str="";
		while(scn.hasNext()) {
			str+=scn.nextLine()+" ";
		}
		str=str.replaceAll("[,.;?!-]", "");
		String arr[]=str.split(" ");
		ArrayList<String> list = new ArrayList<String>();
		ArrayList<Integer> count = new ArrayList<Integer>();
		int j=0;
		for(int i=0;i<arr.length;i++) {
			if(arr[i].equals(""))
				continue;
			for(j=0;j<list.size();j++) {
				if(list.get(j).toLowerCase().equals(arr[i].toLowerCase())) {
					count.set(j, count.get(j)+1);
					break;
				}
			}
			if(j==list.size()) {
				list.add(arr[i]);
				count.add(1);
			}
		}
		for(int i=0;i<list.size();i++) {
			System.out.println(list.get(i)+" : "+count.get(i));
		}
	}
/*題目:[C_ST38-中] 字數統計
    作者:1010
    時間:西元 2018 年3 月 */
}