1

現在、ドキュメント内の次の単語が特定の長さに等しいかどうかを確認する If ステートメントがあります。true を返した後、その単語を配列や文字列などに追加したいのですが、next() コマンドを使用すると、次の条件で使用したにもかかわらず、ドキュメント内の次の値に進むという問題があります。 If ステートメント。私は Java に少し慣れていないので、この単純なクリックが理にかなっていることを願っています。

Scanner in1 = new Scanner(inputFile);
String inputString;

while(in1.hasNextLine()){
     if(in1.next().length() == 6){
          inputString = in1.next();
     }
}

基本的に、いくつかの単語を含むファイルがあり、複数行にすべて異なる長さがあります。6文字を含む単語をキャッチしたい。実際の while ループとファイルはもっと複雑です。問題は、If ステートメントを評価した後に次の単語にジャンプすることです。そのため、次の単語が 6 文字であることが検出されると、その後に続く次の単語が変数に読み込まれます。どんな助けやアドバイスも大歓迎です!

4

2 に答える 2

2

の値を変数にキャプチャnext()し、比較を行い、inputStringその変数に設定します。長さが正しくない場合、次に来るものは何でも同じ変数を使用でき、追加の余分なnext(). これが必要なことをするかどうかはわかりません。

于 2012-05-13T21:44:46.530 に答える
2

このループを 2 つの部分に分割できます。

  1. 次のトークンを取得して保存し、
  2. そのキャッシュされたトークンを使用します。

例えば:

while(in1.hasNextLine()) {
     String current = in1.next();
     if(current.length() == 6) {
          inputString = current;
     }
}

これは、指摘した正確な理由でイテレータまたはスキャナを使用する場合の標準的な手法next()です。異なる値を生成せずにメソッドを複数回呼び出すことはできません。

余談ですが、他のプログラミング言語は反復子を設計しているため、反復される値を取得することと次の場所に進むことは別のステップになります。特に、C++ STL はこれらを異なる操作と見なします。

お役に立てれば!

于 2012-05-13T21:45:14.703 に答える