簡體   English   中英

Java編譯器錯誤找不到符號。 這是為什么會發生的?

[英]Java compiler error cannot find symbol. Why is this occuring?

我正在嘗試做出以下聲明:InvertedFile.invertedFile.add(d.getAccessionNumber(),d.getWords());

哪個應該創建一個新的invertedList對象並將其添加到鏈接列表(invertedfile)。 我收到以下錯誤:

找到2個錯誤:文件:C:\\ Users \\ Name \\ Database.java [line:21]錯誤:C:\\ Users \\ Name \\ Database.java:21:找不到符號符號:方法add(int,WordList)位置: class java.util.LinkedList File:C:\\ Users \\ Name \\ InvertedFile.java [line:39]
錯誤:C:\\ Users \\ Name \\ InvertedFile.java:39:找不到符號符號:方法add(int,java.lang.String)location:class java.util.LinkedList錯誤位置:

public int add( Document d ){
    int accessNumber = d.getAccessionNumber();

    //Stores document text in InvertedFile data structure
    InvertedFile.invertedFile.add(d.getAccessionNumber(), d.getWords());

    //Adds document to accessNumber index of LinkedList of documents
    if (documentList.size()<accessNumber){
    documentList.add(accessNumber,d);
    docNumber++;
    return accessNumber;
    }
    else return -1;
}

反向文件類

import java.util.*;

public class InvertedFile implements InvertedFileInterface {

  public static LinkedList<InvertedList> invertedFile = new LinkedList<InvertedList>();

  public InvertedFile(){

  }

  //Takes in docAccessionNumber and WordList and updates/creates invertedList files for each word in wordlist
  public boolean add(int docNumber, WordList w){
    String words = w.toString();
    StringTokenizer parseWords = new StringTokenizer(words);
    //Checks to see if InvertedFile already contains invertedLists for the given words, if so adds docID to existing lists
    while (parseWords.hasMoreTokens()){
      String checkWord = parseWords.nextToken();
    for (int k = 0; k<invertedFile.size()-1; k++){
      InvertedList temp = invertedFile.get(k);
      if (checkWord.equals(temp.getWord())){
        temp.add(docNumber);
      }
    }
    }
    //Checks to see if invertedFile contains lists for given words, if not, makes a new one and adds docNumber to the list
    String wordsToCheck = w.toString();
    StringTokenizer processWords = new StringTokenizer(wordsToCheck);
    while (processWords.hasMoreTokens()){
      String word = processWords.nextToken();
      Boolean notFound = true;
    for (int k = 0; k<invertedFile.size()-1; k++){
      if (word.equals(invertedFile.get(k).getWord())){
        notFound = false;
      }
    }
    if (notFound){
      InvertedFile.invertedFile.add(docNumber, word);
    }
    }
    Database.docNumber++;
    return true;
  }

  public int numLists(){
    return invertedFile.size();
  }

  public int numTokens(){
    return invertedFile.size();
  }

  public InvertedList getInvertedList( String word ){
    for (int k = 0; k<invertedFile.size()-1; k++){
      if (word.equals(invertedFile.get(k).getWord())){
        return invertedFile.get(k);
      }
  }

倒列表類:

import java.util.*;

public class InvertedList implements InvertedListInterface {
  public static LinkedList<Integer> documentsContainingWord = new LinkedList<Integer>();

  public String targetWord;

  public InvertedList( String word ){
    String targetWord = word;

//Scans documents in database for word
    for (int j = 1; j<=Database.documentList.size(); j++){
      Document temp = Database.documentList.get(j);
      WordList words = temp.getWords();
      //If document wordList contains word, and LinkedList doesn't already have that doc listed, add to LinkedList
      //Already sorted since processed from 1 to size
      if (words.contains(word) && !documentsContainingWord.contains(temp.getAccessionNumber())){
        documentsContainingWord.add(temp.getAccessionNumber());
      }
    }
  }

  //Creator method
  public InvertedList(int docNumber, String word){
    String targetWord = word;
    documentsContainingWord.add(docNumber);
  }



  public String getWord(){
    return targetWord;
  }

  //Adds docNumber to sorted position of LinkedList documentsContainingWord
  public boolean add( int docNumber ){
    //If document already in list, don't add
    if (!documentsContainingWord.contains(docNumber)){
      //Places number at sorted position on list
      //If document should be placed at index 0 (has smallest accessionNumber)
      if (docNumber<documentsContainingWord.get(0)){
        return documentsContainingWord.offerFirst(docNumber);
      }
      //If document should be placed in middle
      if (docNumber<documentsContainingWord.get(documentsContainingWord.size()) && docNumber>documentsContainingWord.get(0)){
      int temp = 1;
      int index = 0;
        while (temp<docNumber){
          temp = documentsContainingWord.get(index);
          index++;
        }
        documentsContainingWord.add(index+1, docNumber);
        return true;
      }

      //If document should be placed at end
      if (docNumber>documentsContainingWord.get(documentsContainingWord.size())){
        return documentsContainingWord.offerLast(docNumber);
      }

    //Else document number already in inverted list
      else {
        return false;
  }
  }
    return false;
  }

  public LinkedList getList(){
    return documentsContainingWord;
  }



 Thank you!!

你的static invertedFile變量是一個LinkedList,你試圖在它上面調用一個InvertedFile方法,這是沒有意義的。 您只能在LinkedList變量上調用LinkedList可用的方法(檢查API)。

我認為你的錯誤是使變量invertFile變為靜態。 使其成為私有實例變量,並使任何需要使用InvertedFile的類創建類的實例並在實例上調用方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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