java - Search String in Txt File -
we wrote code in class , i'm having trouble understanding/manipulating it. want modify take user input, instead of searching whole file, , print out position of word in file.
import java.io.bufferedreader; import java.io.datainputstream; import java.io.fileinputstream; import java.io.filenotfoundexception; import java.io.ioexception; import java.io.inputstreamreader; import java.util.arraylist; import java.util.collections; import java.util.comparator; import java.util.hashmap; import java.util.list; import java.util.map; import java.util.set; import java.util.stringtokenizer; import java.util.map.entry; public class assingment7 { public map<string, integer> getwordcount(string filename){ fileinputstream fis = null; datainputstream dis = null; bufferedreader br = null; map<string, integer> wordmap = new hashmap<string, integer>(); try { fis = new fileinputstream(filename); dis = new datainputstream(fis); br = new bufferedreader(new inputstreamreader(dis)); string line = null; while((line = br.readline()) != null){ stringtokenizer st = new stringtokenizer(line, " "); while(st.hasmoretokens()){ string tmp = st.nexttoken().tolowercase(); if(wordmap.containskey(tmp)){ wordmap.put(tmp, wordmap.get(tmp)+1); } else { wordmap.put(tmp, 1); } } } } catch (filenotfoundexception e) { e.printstacktrace(); } catch (ioexception e) { e.printstacktrace(); } finally{ try{if(br != null) br.close();}catch(exception ex){} } return wordmap; } public list<entry<string, integer>> sortbyvalue(map<string, integer> wordmap){ set<entry<string, integer>> set = wordmap.entryset(); list<entry<string, integer>> list = new arraylist<entry<string, integer>>(set); collections.sort( list, new comparator<map.entry<string, integer>>() { public int compare( map.entry<string, integer> o1, map.entry<string, integer> o2 ) { return (o2.getvalue()).compareto( o1.getvalue() ); } } ); return list; } public static void main(string a[]){ assingment7 mdc = new assingment7(); map<string, integer> wordmap = mdc.getwordcount("c://fox.txt"); list<entry<string, integer>> list = mdc.sortbyvalue(wordmap); for(map.entry<string, integer> entry:list){ system.out.println(entry.getkey()+" ==== "+entry.getvalue()); } } }
any thoughts?
you change main method - user enters string want search in console, , if key found in map, outputs the value associated it.
public static void main(string a[]) { assingment7 mdc = new assingment7(); map<string, integer> wordmap = mdc.getwordcount("c://fox.txt"); list<entry<string, integer>> list = mdc.sortbyvalue(wordmap); bufferedreader br = new bufferedreader(new inputstreamreader(system.in)); string input = null; try { input = br.readline(); } catch (ioexception e) { system.out.println(e.getmessage()); } for(map.entry<string, integer> entry:list) { if(entry.getkey().equalsignorecase(input)){ system.out.println(entry.getkey() + " ==== " + entry.getvalue()); } } }
Comments
Post a Comment