User Tools

Site Tools


morse_code_code

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revisionBoth sides next revision
morse_code_code [2018/08/11 01:13] – [Links] frchrismorse_code_code [2018/08/11 01:14] – [String to Morse class] frchris
Line 172: Line 172:
 This is unchanged from the original This is unchanged from the original
 <file java StringToMorse.java> <file java StringToMorse.java>
 +import java.util.*;
  
 +import static java.lang.Character.*;
 +
 +/**
 + * Translate a String into Morse code.
 + 
 + * Maps lower case letters to upper case.
 + * Returned string contains the Morse equivalent of the parameter, 
 + * with codons sperated by slashes, and spaces represented by spaces..
 + 
 + * @author Ian Utting
 + * @version 1.0
 + */
 +
 +public class StringToMorse
 +{
 +    private static final Map<Character, String> code = new HashMap<>();
 +        static {
 +            // Upper case letters
 +            /* A */ code.put('A', ".-");
 +            /* B */ code.put('B', "-...");
 +            /* C */ code.put('C', "-.-.");
 +            /* D */ code.put('D', "-..");
 +            /* E */ code.put('E', ".");
 +            /* F */ code.put('F', "..-.");
 +            /* G */ code.put('G', "--.");
 +            /* H */ code.put('H', "....");
 +            /* I */ code.put('I', "..");
 +            /* J */ code.put('J', ".---");
 +            /* K */ code.put('K', "-.-");
 +            /* L */ code.put('L', ".-..");
 +            /* M */ code.put('M', "--");
 +            /* N */ code.put('N', "-.");
 +            /* O */ code.put('O', "---");
 +            /* P */ code.put('P', ".--.");
 +            /* Q */ code.put('Q', "--.-");
 +            /* R */ code.put('R', ".-.");
 +            /* S */ code.put('S', "...");
 +            /* T */ code.put('T', "-");
 +            /* U */ code.put('U', "..-");
 +            /* V */ code.put('V', "...-");
 +            /* W */ code.put('W', ".--");
 +            /* X */ code.put('X', "-..-");
 +            /* Y */ code.put('Y', "-.--");
 +            /* Z */ code.put('Z', "--..");
 +
 +            // Lower case letters map to the same values as upper case
 +            /* A */ code.put('a', ".-");
 +            /* B */ code.put('b', "-...");
 +            /* C */ code.put('c', "-.-.");
 +            /* D */ code.put('d', "-..");
 +            /* E */ code.put('e', ".");
 +            /* F */ code.put('f', "..-.");
 +            /* G */ code.put('g', "--.");
 +            /* H */ code.put('h', "....");
 +            /* I */ code.put('i', "..");
 +            /* J */ code.put('j', ".---");
 +            /* K */ code.put('k', "-.-");
 +            /* L */ code.put('l', ".-..");
 +            /* M */ code.put('m', "--");
 +            /* N */ code.put('n', "-.");
 +            /* O */ code.put('o', "---");
 +            /* P */ code.put('p', ".--.");
 +            /* Q */ code.put('q', "--.-");
 +            /* R */ code.put('r', ".-.");
 +            /* S */ code.put('s', "...");
 +            /* T */ code.put('t', "-");
 +            /* U */ code.put('u', "..-");
 +            /* V */ code.put('v', "...-");
 +            /* W */ code.put('w', ".--");
 +            /* X */ code.put('x', "-..-");
 +            /* Y */ code.put('y', "-.--");
 +            /* Z */ code.put('z', "--..");
 +
 +            // Digits
 +            /* 0 */ code.put('0', "-----");
 +            /* 1 */ code.put('1', ".----");
 +            /* 2 */ code.put('2', "..---");
 +            /* 3 */ code.put('3', "...--");
 +            /* 4 */ code.put('4', "....-");
 +            /* 5 */ code.put('5', ".....");
 +            /* 6 */ code.put('6', "-....");
 +            /* 7 */ code.put('7', "--...");
 +            /* 8 */ code.put('8', "---..");
 +            /* 9 */ code.put('9', "----.");            
 +
 +            // punctuation
 +            /* . */ code.put('.', ".-.-.-");
 +            /* , */ code.put(',', "--..--");
 +            /* : */ code.put(':', "---...");
 +            /* ? */ code.put('?', "..--..");
 +            /* ' */ code.put('\'', ".----.");
 +            /* - */ code.put('-', "-....-");
 +            /* / */ code.put('/', "-..-.");
 +            /* ( */ code.put('(', "-.--.-");
 +            /* ) */ code.put(')', "-.--.-");
 +            /* " */ code.put('"', ".-..-.");
 +            /* @ */ code.put('@', ".--.-.");
 +            /* = */ code.put('=', "-...-");
 +
 +            // Special code for a space character.
 +                    code.put(' ', " ");
 +        }
 +
 +    /**
 +     * Translate a string into its Morse code equivalent
 +     
 +     * Spaces in message are encoded as spaces in the returned string. Codons are separated by slashes
 +     
 +     * @param message   The string to be translated
 +     * @return The encoded string.
 +     * @throws IllegalArgumentException  if there is a character in message which is not codeable in Morse
 +     */    
 +    public static String translate(String message) {
 +        String result = new String();
 +
 +        for(char c : message.toCharArray()) {
 +            if (code.containsKey(c)) result = result + code.get(c) + "/";
 +            else throw new IllegalArgumentException("Character " + c + "is not in Morse's code");
 +        }
 +        // trim the trailing slash
 +        result = result.substring(0, result.length() - 1);
 +        return result;
 +    }
 +}
 </file> </file>
  
morse_code_code.txt · Last modified: 2018/08/11 02:16 by frchris

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki