I have a program that takes user input and stores each word in an arrayList, and then searches for each word in an external file. What I want to do from here is return another word (which is in another arrayList) or the price value in the same line as the first searched for word.
For example:
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
I then want my program to search each line for tuna and then print out:
Seared $1
Shredded $50
For my program to do this I need it to understand that the word seared is in the first line that tuna appears and that the monetary value in this line is $1. Then to repeat the process for the next line.
The main thing that I need to know is if a buffered reader makes a distinction between separate lines and if I can search each line separately for my words in the arrayList and the monetary values.
My code that I use for searching is below. So far it only searches a file for a word and then returns the location of that word.
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();
}
}
}
I hope this is easier to understand.
Can you be more precise on what you want to return, format of external files and what you want to display?
Regarding your code
you can use str1.contains(str2) method inside String class to check whether user entered word is there in the line or not instead of using matcher as there is no regexp here.
If user enters multiple words then you can have a loop for that.