0

I am still very new to Java and have been trying to get a morse code translator to work. I overcame the first problem with various errors, but now the program compiles but will not print the results of the translation. Any help would be appreciated.

import java.util.Scanner;

public class MorseCode
{
    public static void main(String[] args)
    {
        Scanner Input = new Scanner(System.in);

        System.out.println("To convert English to Morse Code, type M. To convert Morse Code to English, type E.");

        String cType = Input.nextLine();

        String type = cType.toLowerCase();

        if(type == "m")
        {
            String eng;
            System.out.println("Please enter the English text to be translated.");
            eng = Input.nextLine();
            EToM(eng);
        }
        else
        {
            String morse;
            System.out.println("Please enter the Morse code text to be translated, with multiple words seperated by a |.");
            morse = Input.nextLine();
            MToE(morse);
        }
    }
    public static void EToM(String eng)
    {
        String EToMList[] = {".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".--", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--..", ".----", "..---", "...--", "....-", ".....", "-....", "--...", "----.", "-----", "|"};

        String alphabet = "abcdefghijklmnopqrstuvwxyz123456789 ";
        String translation[] = new String[eng.length()];

        for(int x = 0; x < eng.length(); x++)
        {
            for(int y = 0; y < alphabet.length(); y++)
            {
                if(eng.charAt(x) == alphabet.charAt(y))
                {
                    translation[x] = EToMList[y];
                    System.out.println("test");
                }
            }
        }

        System.out.println("Your translated message is:");

        for(int z = 0; z < eng.length(); z++)
        {
            System.out.println(translation[z]); 
        }
    }

    public static void MToE(String morse)
    {

    }
}       
gamer8756
  • 9
  • 3

4 Answers4

3

Your problem is

if(type == "m")

use

if("m".equals(type))

Your if-else will go to else because you are comparing String references and not String values. The else calls the MToE method which is empty. Read this: How Do I compare Strings in Java

Community
  • 1
  • 1
Sotirios Delimanolis
  • 274,122
  • 60
  • 696
  • 724
0

When checking strings for equality in Java, always use the equals method on the String class. Changing the following:

if(type == "m")

to

if(type.equals("m"))

makes the English to Morse code translation output.

I made this modification and ran it successfully just now.

Surveon
  • 729
  • 5
  • 12
0

use This

  if(type.equalsIgnoreCase("m")
  {

  }
muthukumar
  • 2,233
  • 3
  • 23
  • 30
-1

You can use the deepToString method from Java to print out your array.

Documentation Link: http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Arrays.html#deepToString(java.lang.Object[])

Here is a code sample:

System.out.println("Your translated message is:" + java.util.Arrays.deepToString(translation));    
Steve McDuff
  • 338
  • 2
  • 11