import java.io.*; import java.util.*; public class Cipher{ public ArrayList<String> wordList; public static void main(String[] args){ if (args.length == 2){ Cipher c = new Cipher(args[0], (Integer.parseInt(args[1]))); } if (args.length == 1){ if (args[0].length() > 1){ System.out.println("No int given"); } else{ System.out.println("No String given"); } } if (args.length == 0){ System.out.println ("No parameters given"); } } public Cipher(String input, int num){ input = Decapitalize(input); String firstWord = getFirstWord(input); String output = ""; readWords("words.txt"); System.out.println(Encrypt(input, num)); System.out.println(Decrypt(input)); } private String getFirstWord(String input){ String firstWord = ""; if (input.contains(" ")){ for (int i = 0; input.charAt(i) != ' '; i++){ firstWord += input.charAt(i); } }. else{ for (int i = 0; i < input.length(); i ++){ firstWord += input.charAt(i); } } return firstWord; } private void readWords(String filename){ int longest = 0; wordList = new ArrayList<String>(); try{ Scanner sc = new Scanner(new File(filename)); while(sc.hasNext()){ String s = sc.nextLine(); wordList.add(s); if (s.length() > longest) longest = s.length(); } }catch (Exception e) { System.out.println(e); System.exit(0); } } private String Decapitalize(String input){ String output = ""; for (int i = 0; i < input.length(); i++){ if (input.charAt(i) >= 65 && input.charAt(i) <= 90) output += (char) (input.charAt(i) + 32); else output += input.charAt(i); } return output; } public String Encrypt(String input, int num){ String output = ""; for(int i = 0; i < input.length(); i++){ if (input.charAt(i) + num > 'z' && input.charAt(i) >= 97 && input.charAt(i) <= 122){ output += ((char) (input.charAt(i) + (num - 26))); } else if(input.charAt(i) + num <= 'z' && input.charAt(i) >= 97 && input.charAt(i) <= 122){ output += ((char) (input.charAt(i) + num)); } else output += input.charAt(i); } return output; } public String Decrypt(String input){ String firstWord = getFirstWord(input); System.out.println(firstWord); String output = ""; for (int a = 0; a < 26; a++){ if (wordList.contains(Encrypt(firstWord, a))){ return Encrypt(input, a); } } return "ERROR"; } }