第1关:单词分割
任务描述
本关任务:将一段英语字符串进行单词分割。
编程要求
请仔细阅读右侧代码,根据方法内的提示,在Begin - End
区域内进行代码补充,具体任务如下:
- 用
String.split()
方法将字符串“aaa|bbb|ccc”以“|”进行拆分,用StringTokenizer
类将字符串“This?is?a?test?string”以“?”
进行拆分。
测试说明
补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。
通关代码
package step1;
import java.util.List;
import java.util.ArrayList;
import java.util.StringTokenizer;
public class StudentDemo{
//使用String.split()方法分割
public List<String> splitPartition(String str){
List<String> list=new ArrayList<String>();
//请在此添加实现代码
/********** Begin **********/
String[] strArray=str.split("\\|");
for(String str2:strArray){
System.out.println(str2);
}
System.out.println();
/********** End **********/
return list;
}
//使用StringTokenizer类进行分割
public List<String> tokenPartition(String str){
List<String> list=new ArrayList<String>();
//请在此添加实现代码
/********** Begin **********/
String[] strArray=str.split("\\?");
for(String str1:strArray){
System.out.println(str1);
}
/********** End **********/
return list;
}
}
第2关:确定单词在字符串中的位置
任务描述
本关任务:得到一个单词在一段字符串中的位置。
编程要求
请仔细阅读右侧代码,根据方法内的提示,在Begin - End
区域内进行代码补充,具体任务如下:
- 列出给定字符串中每个单词(按
“ ”
,“,”
,“?”
,“.”
,“!”
,“:”
,“\n”
分割)首次出现的位置。
测试说明
补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。
通关代码
package step2;
import java.util.Map;
import java.util.HashMap;
import java.util.StringTokenizer;
public class StudentDemo {
//返回一个Map集合来得到单词和首次出现的下标 key为单词名称 value为单词的角标
public Map<String, Integer> getMap(String str) {
Map<String, Integer> map = new HashMap<String, Integer>();
//对str进行分割 再加入map集合中
//请在此添加实现代码
/********** Begin **********/
StringTokenizer tok = new StringTokenizer(str);
String word;
while (tok.hasMoreTokens()) {
word = tok.nextToken(" ,.\n");
int index = str.indexOf(word);
map.put(word, index);
}
/********** End **********/
return map;
}
}
第3关:实现词频统计和排序输出
任务描述
本关任务:编写一个能计算一段文本内容中出现单词的次数的降序排列的小程序。
编程要求
请仔细阅读右侧代码,根据方法内的提示,在Begin - End
区域内进行代码补充,具体任务如下:
- 将指定文本(可以通过右侧文件目录下的
src/step3/readme.txt
查看)以降序的方式输出每个单词出现的次数。
测试说明
补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。
预期输出: 参考右边测试集中的输出。
通关代码
package step3;
import java.util.Map;
import java.util.HashMap;
import java.util.StringTokenizer;
public class StudentDemo{
//获取单词的数量
public Map<String, Integer> getWordCount(String str) {
Map<String, Integer> map = new HashMap<String, Integer>();
//请在此添加实现代码
/********** Begin **********/
StringTokenizer tokenizer = new StringTokenizer(new String(str));
int count;
String word;
while (tokenizer.hasMoreTokens()) {
word = tokenizer.nextToken(" ,?.!:;\"\"‘’\n");
if (map.containsKey(word)) {
count = map.get(word);
map.put(word, count + 1);
} else {
map.put(word, 1);
}
}
/********** End **********/
return map;
}
}