摩尔斯电码

 

问题描述

  摩尔斯电码破译。类似于乔林教材第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 Main {
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
String s = scanner.next();
int start = 0;
int end = 0;
String s1;
while(true){
end = s.indexOf("|", start);         //寻找|所在的位置
if(end < 0){
s1 = s.substring(start);          //最后结束时没有|,返回值为-1,将字符串从start一直到最后
}else{
s1 = s.substring(start, end);
}
start = end + 1;               //寻找下一个|
//判断并转换
if(s1.equals("*-"))
System.out.print("a");
else if(s1.equals("-***"))
System.out.print("b");
else if(s1.equals("-*-*"))
System.out.print("c");
else if(s1.equals("-**"))
System.out.print("d");
else if(s1.equals("*"))
System.out.print("e");
else if(s1.equals("**-*"))
System.out.print("f");
else if(s1.equals("--*"))
System.out.print("g");
else if(s1.equals("****"))
System.out.print("h");
else if(s1.equals("**"))
System.out.print("i");
else if(s1.equals("*---"))
System.out.print("j");
else if(s1.equals("-*-"))
System.out.print("k");
else if(s1.equals("*-**"))
System.out.print("l");
else if(s1.equals("--"))
System.out.print("m");
else if(s1.equals("-*"))
System.out.print("n");
else if(s1.equals("---"))
System.out.print("o");
else if(s1.equals("*--*"))
System.out.print("p");
else if(s1.equals("--*-"))
System.out.print("q");
else if(s1.equals("*-*"))
System.out.print("r");
else if(s1.equals("***"))
System.out.print("s");
else if(s1.equals("-"))
System.out.print("t");
else if(s1.equals("**-"))
System.out.print("u");
else if(s1.equals("***-"))
System.out.print("v");
else if(s1.equals("*--"))
System.out.print("w");
else if(s1.equals("-**-"))
System.out.print("x");
else if(s1.equals("-*--"))
System.out.print("y");
else if(s1.equals("--**"))
System.out.print("z");
if(end < 0){
break;
}
}
scanner.close();
}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值