簡體   English   中英

java從另一個類調用一個方法

[英]java calling a method from another class

我正在解決一個問題而且我很困難,因為我剛開始學習java。 我能理解這一點的任何幫助都會很棒。 我必須編寫一個包含兩個類的程序。 主類將從文件中讀取並使用第二個類來查找在文件中重復相同單詞的次數,並將它們添加到一個數組中,該數組包含單詞和單詞重復的次數。 我對閱讀文件部分感到滿意​​。 我似乎無法繞過如何從第二個類調用一個方法來將單詞添加到數組並增加計數器。 到目前為止,這是我的代碼,如果你運行它,你會看到我對你有多少錯誤有多新。

import java.io.*;

public class Words{
public static void main (String [] args)
{
    ProcessInput();
    System.out.println("\nprogram finished");
}


public static WordList ProcessInput( )
{
    BufferedReader inputFile;
    String inputLine;
    String[] word;
    WordList words;
        try
        {
            inputFile=new BufferedReader(new FileReader ("inputFile.txt"));
            inputLine = inputFile.readLine();
            while (inputLine !=null)
            {
                word=inputLine.toLowerCase().split(" ");
                for (int i=0; i<word.length; i++){
                    System.out.println (word[i]);
                    words=addWord(word[i]);
                }
                inputLine = inputFile.readLine();

            }
            inputFile.close();
        }
        catch (IOException ioe)
        {
            System.out.println (ioe.getMessage());
            ioe.printStackTrace ();
        }
        return words;
}

}

class WordList {
String [] words;
int wordcount;
public WordList ( ){
    words= new String [1000];
    wordcount=0;

}

public String  addWord (String word) {
    words[wordcount]=word;
    wordcount=+1;
    return words[wordcount];

}

public void printList (){
    for (int i=0; i<wordcount; i++){
        System.out.println (words[i]);
    }
}
}

你很近。 你需要記住的是當你從另一個類調用一個方法時,你需要告訴編譯器在哪里找到該方法。

因此,您不需要簡單地調用addWord("someWord") ,而是需要初始化WordList類的實例(例如WordList list = new WordList(); ),然后使用該方法調用該方法(即list.addWord("someWord");

但是,您的代碼目前仍然會拋出錯誤,因為那會嘗試從靜態方法調用非靜態方法。 因此,您可以將 addWord()靜態,或者更改Words類中的方法,使它們不是靜態的。

我對以上段落不好 - 但是你可能想重新考慮ProcessInput()是一個靜態方法 - 它真的需要嗎?

您必須初始化對象(創建對象本身)以便能夠調用其方法,否則您將獲得NullPointerException

WordList words = new WordList();

暫無
暫無

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

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