>598
java.lang.StringのメソッドindexOfが検索するための関数。使用法はAPIリファレンス参照。
1つの文字列中で複数個をカウントする必要がある場合は再帰を使うのが王道。
private void search(int i){
 int tmp = str.indexOf("who",i);
 if(tmp != -1){
  count++;
  search(tmp+1);
 }
}
で、search(0)を呼び出せば後は勝手にやってくれる。
これを各行に対し実行するメソッドを作ればいい。
#念のため言っておくが、上は超適当。イメージだけ掴んで適切に書き直すべし
##返す数値をもうちょっと考えるともっとマシな書き方もできるけど、ちょっとややっこしい

改行を無視する方はちょっと難しい。
数だけ数えればいいのなら改行を消して全体を1つの文字列として検索。
(実際は1行ごとにバラしてStringの配列に入れるだろうから、それをくっつけて検索)
どこに出現したかもチェックしたいなら、一行の最後の方に検索文字列の頭文字(w)があるか調べ、見つかったら次の行の頭のほうも見てゴニョゴニョと。