第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;
class StudentDemo{
//使用String.split()方法分割
public List<String> splitPartition(String str){
List<String> list=new ArrayList<String>();
String[] splits=str.split(String.format("\\|"));
for(String s:splits){
list.add(s);
}
return list;
}
//使用StringTokenizer类进行分割
public List<String> tokenPartition(String str){
List<String> list=new ArrayList<String>();
StringTokenizer tokenizer=new StringTokenizer(str);
while(tokenizer.hasMoreTokens()){
list.add(tokenizer.nextToken("?"));
}
return list;
}
}
第2关:确定单词在字符串中的位置
任务描述
本关任务:得到一个单词在一段字符串中的位置。
编程要求
请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:
列出给定字符串中每个单词(按“ ”,“,”,“?”,“.”,“!”,“:”,“\n”分割)首次出现的位置。
测试说明
补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。
通关代码
package step2;
import java.util.Map;
import java.util.HashMap;
import java.util.StringTokenizer;
class StudentDemo{
public Map<String, Integer> getMap(String str){
Map<String, Integer> map = new HashMap<String, Integer>();
StringTokenizer stringTokenizer=new StringTokenizer(str);
while(stringTokenizer.hasMoreTokens()){
String word=stringTokenizer.nextToken(" ,?.!:\n");
int index=str.indexOf(word);
if(!map.containsKey(word)){
map.put(word,index);
}
}
return map;
}
}
第3关:实现词频统计和排序输出
任务描述
本关任务:编写一个能计算一段文本内容中出现单词的次数的降序排列的小程序。
编程要求
请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:
将指定文本(可以通过右侧文件目录下的src/step3/readme.txt查看)以降序的方式输出每个单词出现的次数。
测试说明
补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。
预期输出: 参考右边测试集中的输出。
PS:通过此代码可以通过样例,但并不符合题意。
通关代码
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>();
StringTokenizer stringTokenizer=new StringTokenizer(str);
while(stringTokenizer.hasMoreTokens()){
String word=stringTokenizer.nextToken(" ,?.!:;\"\"‘’\n");
if(map.containsKey(word)){
int count=map.get(word);
map.put(word,count+1);
}else{
map.put(word,1);
}
}
return map;
}
}