摩尔斯电码-Java

问题描述

摩尔斯电码破译。类似于乔林教材第213页的例6.5,要求输入摩尔斯码,返回英文。请不要使用"zylib.h",只能使用标准库函数。用’ * ‘表示’ . ‘,中间空格用’ | '表示,只转化字符表。

摩尔斯码定义见:http://baike.baidu.com/view/84585.htm?fromId=253988。

提示
  清橙进行评测时,输入是以EOF结尾的,而不是换行符。(EOF不是一个字符,“以EOF结尾”是一种通俗但不严谨的说法。)因此可以通过以下方式之一获取输入:

1. 一次读入整行字符串,再进行后续解析。

2. 使用getchar或scanf一次读入一个字符,通过它们的返回值判断输入结束。
样例输出

在这里插入图片描述

代码:

import java.util.Scanner;

public class Test {
    public static char hanshu(String s) {
        char[] arr = s.toCharArray();
        if (arr.length == 1) {
            if (arr[0] == '*') {
                return 'e';
            } else {
                return 't';
            }
        } else if (arr.length == 2) {
            switch (arr[0]) {
                case '*':
                    if (arr[1] == '*') {
                        return 'i';
                    } else {
                        return 'a';
                    }
                case '-':
                    if (arr[1] == '*') {
                        return 'n';
                    } else {
                        return 'm';
                    }
            }
        } else if (arr.length == 3) {
            switch (arr[0]) {
                case '*'://*
                    switch (arr[1]) {
                        case '*'://**
                            if (arr[2] == '*') {
                                return 's';//***
                            } else {
                                return 'u';
                            }
                        case '-'://*-
                            if (arr[2] == '*') {
                                return 'r';
                            } else {
                                return 'w';
                            }
                    }
                case '-'://-
                    switch (arr[1]) {
                        case '*'://-*
                            if (arr[2] == '*') {
                                return 'd';//-**
                            } else {
                                return 'k';
                            }
                        case '-'://--
                            if (arr[2] == '*') {
                                return 'g';
                            } else {
                                return 'o';
                            }
                    }
            }
        } else if (arr.length == 4) {
            if (arr[0] == '*') {//*
                if (arr[1] == '*') {//**
                    if (arr[2] == '*') {//***
                        if (arr[3] == '*') {//****
                            return 'h';
                        } else {
                            return 'v';//***-
                        }
                    } else {//**-
                        return 'f';
                    }
                } else {//*-
                    if (arr[2] == '*') {//*-*

                        return 'l';

                    } else {//*--
                        if (arr[3] == '*') {
                            return 'p';
                        } else {
                            return 'j';
                        }
                    }
                }

            } else {//-
                if (arr[1] == '*') {//-*
                    if (arr[2] == '*') {//-**
                        if (arr[3] == '*') {//-***
                            return 'b';//-***
                        } else {
                            return 'x';
                        }
                    }else {//-*-
                        if (arr[3] == '*'){
                            return 'c';
                        }else {
                            return 'y';
                        }
                    }
                } else {//--
                    if (arr[2] == '*') {//--*
                        if (arr[3] == '*') {//--**
                            return 'z';
                        } else {
                            return 'q';
                        }
                    }
                }
            }
        } else {//-
            if (arr[1] == '*') {
                if (arr[2] == '*') {//-**
                    return 'x';
                }
            } else {
                if (arr[2] == '*') {//-*
                    if (arr[4] == '*') {
                        return 'c';
                    }
                }
            }
        }
        return 'y';
    }
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String s = scanner.nextLine();
        String[] arr = s.split("\\|");
        for (int i = 0;i

你可能感兴趣的:(摩尔斯电码-Java)