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位于 tuna 出现的第一行中,并且该行中的货币价值是 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

您能否更准确地说明要返回的内容、外部文件的格式以及要显示的内容?

关于您的代码,您可以在 String 类中使用 str1.contains(str2) 方法来检查用户输入的单词是否存在于行中,而不是使用匹配器,因为这里没有正则表达式。

如果用户输入多个单词,那么你可以有一个循环。

于 2013-01-03T09:05:45.630 回答
1

您似乎知道如何阅读行以及如何遍历它们,这很好。现在你需要做的就是检查每一行是否包含单词“tuna”,如果它确实用“”替换了“tuna”字符串,你得到的是 Seared 1 美元或 Shredded 50 美元。

于 2013-01-03T09:07:48.650 回答
1

你说过:“我需要知道的主要事情是缓冲阅读器是否区分不同的行,以及我是否可以单独搜索每一行”。

但是 readLine() 确实读取了由换行符 (\n) 分隔的单独行。所以你可以单独处理这些行。对不起,如果我不明白你的问题...

于 2013-01-03T10:25:33.520 回答