簡體   English   中英

代碼編譯但不執行Java

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM