0

ユーザー入力を受け取り、各単語をarrayListに格納してから、外部ファイルで各単語を検索するプログラムがあります。ここからやりたいのは、別の単語(別のarrayListにある)または最初に検索された単語と同じ行の価格値を返すことです。

例えば:

Here is my user input: Tuna

Here are my associated words in another arrayList: (seared, chunky, shredded)

Here are lines in my file: the cost of seared tuna is $1 per tin. Contains brine.
                           the cost of shredded tuna is $50 per packet

次に、プログラムで各行のマグロを検索してから、次のように出力します。

Seared $1
Shredded $50

私のプログラムでこれを行うには、マグロが表示される最初の行に「 seared 」という単語があり、この行の金銭的価値が1ドルであることを理解する必要があります。次に、次の行に対してプロセスを繰り返します。

私が知る必要がある主なことは、バッファリングされたリーダーが別々の行を区別するかどうか、そして各行でarrayList内の単語と金額を別々に検索できるかどうかです。

検索に使用するコードは以下のとおりです。これまでのところ、ファイルで単語を検索してから、その単語の場所を返すだけです。

while((strLine1 = br1.readLine()) != null){
  for(String list: listOfWords){
    Pattern p = Pattern.compile(list);
    Matcher m = p.matcher(strLine1);

    int start = 0;
    while (m.find(start)) {
      System.out.printf("Word found: %s at index %d to %d.%n", m.group(), m.start(), m.end());
      start = m.end();
    }
  }
}

これが理解しやすいことを願っています。

4

4 に答える 4

2

行の価格を検索したい場合は、「$」記号を探してから数値を抽出できると思います。

于 2013-01-03T08:36:20.517 に答える
1

「私が知る必要がある主なことは、バッファリングされたリーダーが別々の行を区別するかどうか、そして各行を別々に検索できるかどうかです」とあなたは言いました。

ただし、readLine()は、改行(\ n)で区切られた個別の行を読み取ります。したがって、これらの行を個別に処理できます。あなたの質問がわからなかったらごめんなさい...

于 2013-01-03T10:25:33.520 に答える
1

何を返したいか、外部ファイルのフォーマット、何を表示したいかについて、より正確に教えてください。

コードに関しては、ここに正規表現がないため、マッチャーを使用する代わりに、Stringクラス内のstr1.contains(str2)メソッドを使用して、ユーザーが入力した単語が行にあるかどうかを確認できます。

ユーザーが複数の単語を入力した場合、そのためのループを持つことができます。

于 2013-01-03T09:05:45.630 に答える
1

あなたは行を読む方法とそれらを反復する方法を知っているようです、それは良いことです。これで、各行に「マグロ」という単語が含まれているかどうか、「マグロ」の文字列が「」に置き換えられているかどうかを確認するだけで、Seared$1またはShredded$50を取得できます。

于 2013-01-03T09:07:48.650 に答える