2011-10-15 13 views
14

からメソッドを呼び出します。私はこれを理解するために得ることができるどんな助けも素晴らしいだろう。私は2つのクラスを持つプログラムを書く必要があります。メインクラスはファイルから読み取られ、時間が同じ単語がファイルに繰り返された単語と単語が繰り返し回数をcontans配列に追加された可能性がどのように見つけるために、第二のクラスを使用します。私はファイルの部分を読んで大丈夫です。私は、2番目のクラスのメソッドを呼び出して配列に単語を追加し、カウンタをインクリメントする方法を頭に入れているようではありません。 はここで、これまであなたがそれを実行する場合は、私はあなたが得るどのように多くのエラーによってこれに午前どのように新しい表示されます私のコードです。Javaは、私が問題に取り組んでいると私はただの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]); 
    } 
} 
} 

答えて

16

あなたは非常に近いです。あなたが覚えておく必要があるのは、別のクラスからメソッドを呼び出すときに、コンパイラにそのメソッドがどこにあるかを伝える必要がある場合です。

ので、代わりに単にaddWord("someWord")を呼び出す、あなたはワードリストクラス(例えばWordList list = new WordList();)のインスタンスを初期化する必要がありますし、次にこれを使用してメソッドを呼び出す(すなわちlist.addWord("someWord");

しかし、であなたのコード現時点ではまだそれが静的なものから非静的メソッドを呼び出そうとすることになるので。だから、あなたは addWord()は、静的作ることができるか、彼らは静的じゃないように、単語クラスのメソッドを変更する、そこにエラーがスローされます。

上の段落と私の悪い - しかし、あなたは再考したい場合がありますProcessInput()は静的メソッドです - 本当に必要なのでしょうか?

+1

は、私は何かが欠けているように見える – blackStar

+1

たくさん助けたこと、ありがとう:どのような彼は 'list.addWord(...)'を呼び出す防ぐでしょうか?これは完全に別のクラスのメソッドです。そのロジックによって、非静的メソッドなので、 'System.out.println'を呼び出すことはできません。そうですか? – StriplingWarrior

+0

あなたは正しいです、なぜ私はその答えをそこに置くのか分かりません。私は、おそらく 'ProcessInput'が静的メソッドである必要はないことを思いつきました。 – charlemagne

5

あなたはそうあなたがNullPointerExceptionになるだろう、そのメソッドを呼び出すことができるようにするために、(オブジェクト自体を作成する)オブジェクトを初期化する必要があります。

WordList words = new WordList(); 
関連する問題