これは、私が確信が持てない私の課題からの質問です。
このクラスには、パブリック メソッド nextWord() が含まれます。新しい行が読み取られたら、String メソッド .split("\s+") を使用して、その行にある単語の配列を作成します。nextWord() メソッドを呼び出すたびに、配列内の次の単語が返されます。配列内のすべての単語が処理されたら、ファイルの次の行を読み取ります。ファイルの終わりに達すると、nextWord() メソッドは値 null を返します。
ファイルを読み取り、個々の文字列を tokenz という配列に格納しました。
tokenz から個々の単語を一度に 1 つずつ返す「nextWord」というメソッドを使用する方法がわかりません。質問の意味がわからないかも?
質問の最後の部分は次のとおりです。
メイン クラスで、(String "A2Q2in.txt" を使用して) MyReader クラスをインスタンス化する processWords() という名前のメソッドを記述します。次に、 nextWord() メソッドを使用して MyReader クラスから単語を 1 つずつ取得し、各単語を新しい行に出力するループを記述します。
これを行う方法を考えましたが、作成するはずの nextWord メソッドから各単語を返す方法がわかりません。String が返された後、メソッドの処理が完了しているため、return ステートメントの後に到達できないため、カウントを増やすことはできません。
何か助けていただければ幸いです。おそらく私はこれを間違った方法で行っていますか?
配列リストなどは使用できません。
これが私のコードです。
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class A2Q2
{
public static void main (String [] args)
{
processWords();
}
public static void processWords()
{
MyReader reader = new MyReader("A2Q2.txt");
String[] words = new String[174];
words[0] = reader.nextWord();
System.out.println(words[0]);
}
}
class MyReader
{
static String name;
static BufferedReader fileIn;
static String inputLine;
static int tokensLength = 0;
static String[] tokens;
static int counter = 0;
// constructor.
public MyReader(String name)
{
this.name = name;
}
public static String[] readFile()
{
String[] tokenz = new String[174];
int tokensLength = 0;
try
{
fileIn = new BufferedReader (new FileReader(name));
inputLine = fileIn.readLine();
while(inputLine !=null)
{
tokens = inputLine.split("\\s+");
for (int i = 0 ; i < tokens.length; i++)
{
int j = i + tokensLength;
tokenz[j] = tokens[i];
}
tokensLength = tokensLength + tokens.length;
inputLine = fileIn.readLine();
}
fileIn.close();
}
catch (IOException ioe)
{
System.out.println(ioe.getMessage());
ioe.printStackTrace();
}
//FULL ARRAY OF STRINGS IN TOKENZ
return tokenz;
}
public static String nextWord()
{
String[] tokenzz = readFile();
//????
return tokenzz[0];
}
}