这应该是直截了当但是出于某种原因,当我在将文件下载到SD卡后尝试计算文件中的单词时,数字似乎已关闭。此外,出现的次数越多,我的结果似乎越远。我使用Microsoft Word来验证出现次数(仅使用忽略大小写和整个单词)。为了测试出现次数,我使用下面的“the_counter”变量。我还验证了下载和安装没有任何问题。 FULL文件下载到我的SD卡。这让我疯了 - 我认为Word不能错,所以下面的代码可能出错了?
可能是文件中的空格或特殊字符导致问题 - 有没有办法清理文件以验证这个?
//Find the directory for the SD Card using the API
File sdcard = Environment.getExternalStorageDirectory();
//Get the text file
File file = new File(sdcard,TEMP_FILE);
//Read text from file
//StringBuilder text = new StringBuilder();
m_tree = new Tree();
int i=0;
BufferedReader br = null;
long the_counter=0;
try {
br = new BufferedReader(new FileReader(file));
String line;
String []arLine;
while ((line = br.readLine()) != null) {
//get each word in line
if(line.length()==0)
continue;
arLine = line.split("\\s+");
//now add each word to search tree
for(i=0;i< arLine.length;++i){
m_tree.insert(arLine[i]);
if(arLine[i].equalsIgnoreCase("a"))
++the_counter;
}
}
m_sTest = Long.toString(the_counter) ;
br.close();
我编辑了我的代码,每行读取每个字符并手动创建单词。我仍然得到相同的结果。
br = new BufferedReader(new FileReader(file));
String line;
String []arLine;
StringBuilder word = new StringBuilder();
while ((line = br.readLine()) != null) {
//check for word at end of last line
if(word.length()>0){
m_tree.insert(word.toString());
word.setLength(0);
}
char[] lineChars = new char [line.length()];
line.getChars(0,line.length(),lineChars,0);
for(char c: lineChars){
if(c== ' '){
//if we have a word then store and clear then move on
if(word.length()>0){
m_tree.insert(word.toString());
word.setLength(0);
}
}
else{
word.append(c);
}
}
答案 0 :(得分:0)
这个问题是我没有在单词之间考虑特殊字符:即: 这是四个字,而不是一个。我甚至不确定这是正确的语法还是写作,但是它存在于此档案中,它肯定会让我失去理智。