[英]Code compiling but not executing Java
我已經在下面編寫了代碼,據我所知,它應該可以正確執行,但是卻不能正確執行。 找到要添加到臨時矢量列表的對象后,我要做的就是遍歷矢量列表,獲取每個文件名並計算單詞出現的次數。 我可以使這兩段代碼分別工作,但是當我將它們放在一起時,代碼在填充了臨時矢量列表后便停止執行。 誰能從我的下面的代碼中看到阻止其余代碼執行的原因?
編輯的代碼>>我更改了代碼中的一些內容,以正確設置格式並刪除重復項,但現在屏幕上沒有任何輸出。 我敢肯定這很簡單,但是似乎看不到它。
for(int m = 0; m < temp.size() && occurCount < wordCount;m++)
{
File aFile2 = new File(temp.elementAt(m));
FileReader aFileReader = new FileReader(aFile2);
BufferedReader aBufferReader = new BufferedReader(aFileReader);
while((line = aBufferReader.readLine()) != null && occurCount < wordCount)
{
words = line.toLowerCase().split(" ");
if (line == null)
break;
else
{
for(int k = 0; k < words.length && occurCount < wordCount;k++)
{
if(words[k].matches(wordToSearch))
{
occur++;
q.add(words[k]);
}
else if(words[k].matches(pattern))
{
System.out.println(words[k]);
if(temp.contains(words[k]))
System.out.println("Word already in list");
else
{
temp.add(words[k]);
}
}
}
}
lineFile = "";
}
occurCount = occur;
occur = 0;
aBufferReader.close();
searched.add(temp.elementAt(m));
occurCount2 += occurCount;
//occurCount += occurCount;
System.out.println(occurCount);
System.out.println(q);
System.out.println(temp);
System.out.println(searched);
char aChar = 'x';
for (int i = 0; i <= line.length()-1; i++)
{
aChar = line.charAt(i);
lineFile += aChar;
}
words = lineFile.split(" ");
if (line == null)
break;
lineFile = "";
與以下內容相同:
words = line.split(" ");
for(int k = 0; k <= words.length - 1;k++)
{
if(words[k].matches(pattern))
{
System.out.println(words[k]);
if(!searched.contains(words[k]))
{
if(temp.contains(words[k]))
System.out.println("Word already in list");
else
{
temp.add(words[k]);
}
}
}
通常將for (int i = 0; i < n; i++)
而不是<= n - 1
。
您使用了temp.add,可能應該已經對其進行了搜索。否則,外部循環將繼續進行:( for ... < temp.size()
)
for (String word : words)
{
if (word.matches(pattern))
{
System.out.println(word);
if (!searched.add(word))
System.out.println("Word already in list");
}
}
當單詞已經包含在集合中時, add
返回false。
words
必須是通用類型,例如Set<String>
。
首先,重構您的代碼。 我的意思是考慮一下,然后嘗試寫得更好一些。 例如以下部分
line = line.toLowerCase();
char aChar = 'x';
for (int i = 0; i <= line.length()-1; i++) {
aChar = line.charAt(i);
lineFile += aChar;
}
words = lineFile.split(" ");
可以改寫成
words = line.toLowerCase().split(" ");
您將相同的代碼部分編寫了兩次-將它們提取到某些方法中。
我想您的代碼中還有很多。 擁有后,將相關部分粘貼到此處,我們將看到...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.