我正在解决一个问题而且我很困难,因为我刚开始学习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]);
}
}
}
答案 0 :(得分:16)
你非常接近。你需要记住的是当你从另一个类调用一个方法时,你需要告诉编译器在哪里找到该方法。
因此,您不需要简单地调用addWord("someWord")
,而是需要初始化WordList类的实例(例如WordList list = new WordList();
),然后使用该实例调用该方法(即list.addWord("someWord");
。
但是,你的代码目前仍会抛出错误,因为那会尝试从静态方法中调用非静态方法。因此,您可以使 addWord()
为静态,或者更改Words类中的方法,使它们不是静态的。
我对以上段落不好 - 但是你可能想重新考虑ProcessInput()
是一个静态方法 - 它真的需要吗?
答案 1 :(得分:6)
您必须初始化对象(创建对象本身)才能调用其方法,否则您将获得NullPointerException
。
WordList words = new WordList();