【问题标题】:java calling a method from another classjava调用另一个类的方法
【发布时间】:2011-10-15 06:49:58
【问题描述】:

我正在解决一个问题,因为我刚刚开始学习 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]);
    }
}
}

【问题讨论】:

    标签: java


    【解决方案1】:

    你很亲密。您需要记住的是,当您从另一个类调用方法时,您需要告诉编译器在哪里可以找到该方法。

    因此,您需要初始化 WordList 类的一个实例(例如 WordList list = new WordList();),然后使用它调用方法(例如 list.addWord("someWord");),而不是简单地调用 addWord("someWord")

    但是,此时您的代码仍然会在那里抛出错误,因为那会尝试从静态方法调用非静态方法。因此,您可以将 addWord() 设为静态,或更改 Words 类中的方法,使其不是静态的。

    我对上面的段落不好-但是您可能想重新考虑ProcessInput()是一个静态方法-真的需要吗?

    【讨论】:

    • 我似乎遗漏了什么:什么会阻止他打电话给list.addWord(...)?这是一个完全独立的类的方法。按照这个逻辑,他也不应该调用System.out.println,因为这是一个非静态方法,对吧?
    • 你是对的,我不太清楚为什么我把这个答案放在那里。我的意思是提出 ProcessInput 可能不需要是静态方法。
    【解决方案2】:

    您必须初始化对象(创建对象本身)才能调用其方法,否则您将获得NullPointerException

    WordList words = new WordList();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多