title: Java: MorseCode Converter
body: <p>I'm trying to convert Morse code into text.</p>
  
  <p>I have two text files to use with this problem.
  morseCode.txt: I have a file that i read off that contains the letters and corresponding Morse code equivalent. </p>
  
  <p>morse.dat: Its the file that contains the encrypted message in Morse code</p>
  
  <p>I was able to read the first file properly and then store then into separate arrays. I tested it by printing the array for letters and array morse code and found that it did store it properly and in order.</p>
  
  <p>I'm having problems with reading the message the second file. 
  This is the morseCode.txt key:</p>
  
  <pre><code>A   .- 
  B   -... 
  C   -.-. 
  D   -.. 
  E   . 
  F   ..-. 
  G   --. 
  H   .... 
  I   .. 
  J   .--- 
  K   -.- 
  L   .-.. 
  M   -- 
  N   -. 
  O   --- 
  P   .--. 
  Q   --.- 
  R   .-. 
  S   ... 
  T   - 
  U   ..- 
  V   ...- 
  W   .-- 
  X   -..- 
  Y   -.-- 
  Z   --..
  0   ----- 
  1   .---- 
  2   ..--- 
  3   ...-- 
  4   ....- 
  5   ..... 
  6   -.... 
  7   --... 
  8   ---.. 
  9   ----. 
  .  .-.-.- 
  ,   --..-- 
  ?   ..--.. 
  </code></pre>
  
  <p>This is what the Message.txt file looks like:</p>
  
  <pre><code>    - .... .. ... 
  .. ... 
  .- 
  - . ... - 
  .--. .-. --- --. .-. .- -- .-.-.- 
  .. ..-. 
  -.-- --- ..- 
  ... . . 
  - .... .. ... 
  -- . ... ... .- --. . 
  - .... .- - 
  .. ... 
  --. --- --- -.. 
  -. . .-- ... 
  -.-- --- ..- .-. 
  .--. .-. --- --. .-. .- -- 
  .-- --- .-. -.- ... .-.-.- 
  </code></pre>
  
  <p>Its supposed to ouput:</p>
  
  <pre><code>THIS IS A TEST PROGRAM.
  IF YOU SEE THIS MESSAGE THAT IS GOOD NEWS YOUR PROGRAM WORKS.
  </code></pre>
  
  <p><strong>+++THIS IS MY SOLUTION.+++</strong></p>
  
  <pre><code>/*     
   *This is a program that translates Morse Code to English text. The key is read from a file. 
   *
   *The file contains the equivalent letters and Morse code. The entire key is stored in an array for reference. 
   *
   *A second file contains the encrypted message. The program reads the message file and converts individual Morse code 
   *
   *letters into alphabet letters. The results are displayed and printed out to another file. */
  
  import java.io.*;
  import java.util.Scanner;
  
  //file writer and print writer to save the output
  public class Assignment4
  {
   @SuppressWarnings("null")
   public static void main (String [] args) throws IOException
   {
    //arrays for letters and Morse Code values
    String[] letter = new String[39], morseCode = new String[39];     
    //this is the file with the letters and morse code equivalent
    File file1 = new File ("c:/morseCode.txt");
    Scanner in = new Scanner(file1);  
  
    int i = 0;
  
    while (in.hasNext())
          {
              //read in letter
     letter[i] = in.next();   
     //read in Morse Code
              morseCode[i] = in.next();          
  
              i++;
          }
  
    //this is the file with encrypted message
    String morseLine, morseLetter, theLetter = " ";  
    //this file contains the encrypted message
    File file2 = new File ("c:/morse.dat");
    Scanner data = new Scanner(file2);
  
    //this appends the data to the file and keeps a running input 
    FileWriter fWriter = new FileWriter("c:/Message.txt", true);
    PrintWriter outPutFile = new PrintWriter(fWriter);
  
    boolean found; 
    int  number = morseCode.length; 
  
    while (data.hasNext())
    {
     //reads each line of mesage
     morseLine = data.nextLine(); 
  
     i = 0; 
     int j = 0,  k = 0;      
     j = morseLine.indexOf(" ");   
  
     while (j != -1)
     {
      //determines the end of a letter in Morse code and stores the 
      morseLetter = morseLine.substring(i, j);
  
      found = false;    
      k = 0;    
      theLetter = " ";
  
      //this loop searches the array of morseCode for the equal Morse code letter
      //then it assigns the corresponding letter that is equivalent
      while (k &lt; number &amp;&amp; !found)
      {
       if (morseLetter.equals(morseCode[k]))
       {
        theLetter = letter[k];      
        found = true;
       }
  
       else
       {
        k++;
       }
      }
  
      //this condition prints the equivalent letter of the Morse code letter
      //on the message
      if (!theLetter.equals(" "))
      {
       System.out.print(theLetter);     
       outPutFile.print(theLetter);
      }
  
      i = j + 1;    
      j =  morseLine.indexOf(" ", i);    
     }   
  
     if(theLetter.equals("."))
     {
      //moves to the next line at the end of the sentence
      System.out.println(""); 
      outPutFile.println("");
     }
  
     else
     {
      //this separates the letters into words
      System.out.print(" "); 
      outPutFile.print(" ");
     }
    }
  
    outPutFile.close();
      }
  }
  </code></pre>