import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.InputStreamReader; import java.io.IOException; import java.util.ArrayList; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import javax.swing.JFileChooser; public class PhoneMnemonics { public static void main(String[] args) { // Read the dictionary into a list of Strings File selected = selectDictionary(); if(selected == null) return; System.out.println("Loading dictionary..."); Set dict = new HashSet(); try { BufferedReader in = new BufferedReader(new FileReader(selected)); String line = in.readLine(); while(line != null) { dict.add(line.toUpperCase()); line = in.readLine(); } in.close(); } catch(IOException e) { System.err.println("Could not open dictionary."); System.exit(0); return; } // Read phrases from the user and display results BufferedReader console = new BufferedReader(new InputStreamReader(System.in)); while(true) { System.out.print("Phone number (empty line to quit): "); String number; try { number = console.readLine(); } catch(IOException e) { e.printStackTrace(); return; } if(number == null || number.length() == 0) break; number = number.trim().replace("-", ""); List mnemonics = computeMnemonics(dict, number); if(mnemonics.isEmpty()) { System.out.println("No mnemonics found."); } else { int count = mnemonics.size(); System.out.println(count + " mnemonics found:"); for(int i = 0; i < 25 && i < count; i++) { System.out.println(" " + mnemonics.get(i)); } if(count > 25) { System.out.println("others not displayed"); } } } } private static File selectDictionary() { // First check whether dictionary is already there File ret = new File("/usr/share/dict/words"); if(ret.canRead()) return ret; // Otherwise ask the user to select the data file JFileChooser chooser = new JFileChooser(); chooser.setDialogTitle("Select Data File"); int result = chooser.showDialog(null, "Select"); if(result == JFileChooser.APPROVE_OPTION) { return chooser.getSelectedFile(); } else { // dialog canceled System.err.println("File not selected canceled; program complete"); return null; } } private static List computeMnemonics(Set dict, String number) { return new ArrayList(); } }