title: Beginner Java; Morse (De/En)crypting. Removing Substring Pieces
body: <p>I have a Morse code coder and decoder here. I'm having an issue trying to remove pieces I have already done from the substring here  </p>
  
  <pre><code>sub = encrypted.indexOf(',');
  morsechar1 = encrypted.substring(0,sub);
  morsechars = encrypted.substring(sub);
  </code></pre>
  
  <p>So that it keeps going instead of returning to the first ',' and the first ' ' it runs into. I'm stuck using simple code, otherwise I'd use replace or trim or anything else. Could I get some pointers?</p>
  
  <p>((Note: Messed up posting this to Code Review, meant to post it here))</p>
  
  <p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
  <div class="snippet-code">
  <pre class="snippet-code-js lang-js prettyprint-override"><code>import java.io.*;
  
  public class MORSE {
    // Scanner object
    BufferedReader keyboard = new BufferedReader(new InputStreamReader(System.in));
    /**
     * Constructor for objects of class MORSE
     * This is where the code for the morse encoder/decoder goes.
     */
    public MORSE() throws IOException
    //here is where all of the variables go.
    { //Starting with the morse code alphabet.
      char[] letters = {
        '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'
      };
      String[] morse = {
        ".-",
        "-...",
        "-.-.",
        "-..",
        ".",
        "..-.",
        "--.",
        "....",
        "..",
        ".---",
        "-.-",
        ".-..",
        "--",
        "-.",
        "---",
        ".--.",
        "--.-",
        ".-.",
        "...",
        "-",
        "..-",
        "...-",
        ".--",
        "-..-",
        "-.--",
        "--.."
      };
      //Then the blank variables so the loops play nice.
      String sentence = "";
      String encrypted = "";
      //variables to help decode.
      String morsechar1, morsechars;
      //a temporary character to hold a value.
      char temp;
      //and some blank numbers so that the loops play nice.
      int choice = 0;
      int sub = 0;
      int alt = 0;
  
      while (choice != 3) {
        //Menu time!
        //Here is where you ask the user their input.
        System.out.println("1. Encrypt a sentence in Morse code");
        System.out.println("2. Decrypt a sentence back to English");
        System.out.println("3. Quit");
        System.out.println("Please enter your choice (1,2,3)");
        //once you have their number, you bring it to the right loop.
        choice = Integer.parseInt(keyboard.readLine());
        //Why am I restating this? So that the values go back to blank during the loop.
        sentence = "";
        encrypted = "";
        if (choice == 1) {
          //Here you ask the user to enter the words to encode to morse.
          System.out.println("Enter the sentence you wish to turn into morse code.");
          //this reads the sentence entered.
          sentence = keyboard.readLine().substring(0);
          //no caps
          sentence = sentence.toLowerCase();
          //analyze letters entered with this loop.
          for (int x = 0; x &lt; sentence.length(); x++) {
            //copy letter from sentence to temp using charAt
            temp = sentence.charAt(x);
            //find the temp letter in the array in the same pos as the
            //morse code blips it's letter equals.
            for (int y = 0; y &lt; 26; y++) {
              //check if letter at position y = temp
              if (temp == letters[y]) {
                //then write out the sentence bit by bit.
                encrypted = encrypted + morse[y];
                encrypted = encrypted + ",";
              }
              //check if temp = space
              if (temp == ' ') {
                //add space where needed.
                encrypted = encrypted + " ";
              }
            }
          }
          System.out.println(encrypted);
        } else if (choice == 2) {
          //Here they enter the morse code they have and want to encode.
          System.out.println("Enter the sentence you wish to revert from Morse Code.");
          //This reads the user's entry.
          encrypted = keyboard.readLine().substring(0);
          //This just defines the variable so the program works.
          morsechar1 = "";
          //here comes the tricky bit.
          //This loop reads each letter and translates it.
          for (int x = 0; x &lt; sentence.length(); x++) {
            /**
             *Here's where my issues is. I'm trying to remove from the substring.
             *The pieces I've already done, for both Alt and Morsechars.
             * It doesn't want to work. At all.
             */
            sub = encrypted.indexOf(',');
            //This 'sub' finds the position of the comma that separates
            //the morse code.
            morsechar1 = encrypted.substring(0, sub);
            //This goes from the first position to the comma as the
            //first character
            morsechars = encrypted.substring(sub++);
            //This should go from the first comma to the next one...
            //supposedly.
            alt = encrypted.indexOf(' ');
            //then this grabs the space as it did above.
  
            //find the temp letter in the array in the same pos as the letter
            //it's switching from the encrypted alphabet.
            for (int y = 0; y &lt; 26; y++) {
              //check the morse letter and where in the array it is.
              //Find the equal letter.
  
              //This Morse.equals is a string command to match string.
              if (morsechars.equals(morse[y])) {
                //Then this grabs the equivalent letter in the alphabet.
                sentence = sentence + letters[y];
              }
              //check if temp = space
              if (alt == 1)
              //alt was defined as a variable index.of earlier.
              {
                //insert space.
                sentence = sentence + " ";
                alt = 0;
              }
            }
          }
          //this prints out the decoded sentence.
          System.out.println(morsechar1 + sentence);
        } else if (choice == 3) {
          //this ends the loop.
          System.out.println("Thanks for stopping by.");
          break;
        } else {
          //This sends them back into the loop for an incorrect entry.
          System.out.println("Sorry, that wasn't a proper option. Try again.");
        }
      }
    }
  }</code></pre>
  </div>
  </div>
  </p>