【发布时间】:2016-08-18 04:42:12
【问题描述】:
大家好,我是 Java 新手,我正在为我的 Java 入门课程做一个奖励作业,我想知道是否有人可以帮助指导我解决奖励问题:我只需要一个起点!谢谢你的帮助!
这是作业的原始要求:
1) 一个接受单个参数的构造函数,一个 String 表示要处理的输入文件的名称。完毕 2) 一个名为 processFile() 的函数,它不接受任何参数,并抛出一个 IOException。此函数必须读取输入文件的内容并计算每个标记(单词)在文件中存在的次数。成员变量 HashMap 是一个很好的类。 3) 一个没有参数的 getFileName() 函数返回一个包含输入文件名的字符串。 4) 无参数的 getTokenCount() 函数返回一个 int,它是输入文件中标记(单词)的总数。 5) 一个 getTokenCount() 函数,它接受一个字符串参数,并返回令牌(单词)在输入文件中出现的次数。 6) 一个 getTokensHavingCount() 函数,它接受一个 int 参数(计数),并返回一个字符串的 ArrayList,其中这些字符串是在输入文件中恰好出现“计数”次的标记。 7) 一个 getTokensHavingLength() 函数,它接受一个 int 参数(长度),并返回一个字符串数组列表,其中这些字符串是输入文件中具有该精确长度的标记。 8) 无参数的 getAverageOfCounts() 函数返回令牌计数的平均值。
因为这是我目前的代码,
import java.io.*;
public class Assignment4 {
// Your member variables go here
private String filename;
private int wordcount; // ?
private Map<String, Integer> freq = new HashMap<>(); // <Key,Value>
public Assignment4(final String fileName) {
this.filename = fileName;
}
public void processFile() throws IOException {
File file = new File(filename);
BufferedReader reader;
try {
FileReader fileReader = new FileReader(file);
reader = new BufferedReader(fileReader);
file = null;
String text = "";
String line = reader.readLine();
while (line != null) {
text = text + line + " ";
line = reader.readLine();
}
StringTokenizer st = new StringTokenizer(text);
wordcount = st.countTokens();
}
}
public String getFileName() {
return filename;
}
public int getTokenCount() {
return freq.size;
}
public int getTokenCount(final String key) {
return freq.get(key);
}
public ArrayList<String> getTokensHavingCount(final int count) {
ArrayList<String> wordCount = new ArrayList<String>();
Set<String> set = freq.keySet();
for (String word : set) {
int noOfTimes = freq.get(word);
if (noOfTimes == count)
freq.add(word);
}
return wordCount;
}
public ArrayList<String> getTokensHavingLength(final int length) {
ArrayList<String> wordlength = new ArrayList<String>();
Set<String> set = freq.keySet();
for (String word : set) {
if (word.length() == length)
wordlength.add(word);
}
return wordlength;
}
public int getCountOfTokensHavingCount(final int count) {
return getTokensHavingCount(count).size();
}
public int getCountOfTokensHavingLength(final int length) {
return getTokenHavingLength(count).size;
}
public double getAverageOfCounts() {
ArrayList<String> wordlength = new ArrayList<String>();
double sum = 0.0d;
Set<String> set = freq.keySet();
for (String word : set) {
sum += freq.get(word);
}
return sum / (double) freq.size();
}
}
奖励 #1:添加一个名为 getCountOfTokensHavingCount() 的函数,该函数接受一个 int 参数 (count),并返回出现在输入文件中的标记数正好“count”次。
奖励 #2:添加一个名为 getCountOfTokensHavingLength() 的函数,该函数接受一个 int 参数(长度),并返回出现在输入文件中的标记的数量,其中标记中具有完全“长度”字符。
【问题讨论】:
-
"添加一个函数..." 我们要向什么添加一个函数?不知道这一点是不可能回答的,例如您引用了“输入文件”和“令牌”,但没有提供有关当前如何获取它们的任何详细信息。
-
请给我们您已有的完整代码。您似乎正在处理文件。如果没有您使用的所有类的完整代码,没有人可以帮助您。
-
#1 提示:
Map<Token, Integer>. -
对原始代码进行编辑并将上传谢谢大家!
-
@AndyTurner 用完整代码更新问题