//设计一个电报机

//要导入的包

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

import java.applet.Applet;
import java.applet.AudioClip;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;

import javax.swing.JFrame;

//界面设置,包括按钮,面板

public class LXCON extends JFrame implements ActionListener{
 
  /**
   *
   */
  private static final long serialVersionUID = 1L;
  JFrame f;
  JPanel p1,p2,p3;
  JTextField t1,t2;
  Label l1= new Label("INPUT");
  Label l2=new Label("OUTPUT");
  JButton b1[]=new JButton[3];
  String b[]= {"CLEAR","SWITCH","BEEP"};
  public LXCON(){
      f=new JFrame("摩尔斯电码转换器V1.1");
      t1=new JTextField(35);
      t2=new JTextField(35);
      p1=new JPanel();
      p2=new JPanel();
      p3=new JPanel();
      f.setBounds(400, 200, 500,300);

f.add(p1,BorderLayout.NORTH);
      f.add(p2,BorderLayout.SOUTH);
      f.add(p3,BorderLayout.CENTER);
      p3.setLayout(new GridLayout(1,3));
      
      p1.add(t1);
      p1.add(l1);
      p2.add(t2);
      p2.add(l2);
      for(int i=0;i<3;i++) {
          b1[i]=new JButton(b[i]);
          p3.add(b1[i]);
          b1[i].addActionListener(this);
      }
     
 
//     
      f.setVisible(true);
  }

public void actionPerformed(ActionEvent e) {

if(e.getSource()==b1[0]) {
        t2.setText("");
        t1.setText("");
        }
      else if (e.getSource()==b1[1]) {
          t2.setText(mo(t1.getText()));
      }
      else if (e.getSource()==b1[2]) {
          try {
              beee(t2.getText());
          } catch (InterruptedException e1) {
              // TODO Auto-generated catch block
              e1.printStackTrace();
          }
      }
     }

public static String mosc (String toEncode)

{

String morse = toEncode;

if (toEncode.equalsIgnoreCase("a"))

morse = ".-";

if (toEncode.equalsIgnoreCase("b"))

morse = "-...";

if (toEncode.equalsIgnoreCase("c"))

morse = "-.-.";

if (toEncode.equalsIgnoreCase("d"))

morse = "-..";

if (toEncode.equalsIgnoreCase("e"))

morse = ".";

if (toEncode.equalsIgnoreCase("f"))

morse = "..-.";

if (toEncode.equalsIgnoreCase("g"))

morse = "--.";

if (toEncode.equalsIgnoreCase("h"))

morse = "....";

if (toEncode.equalsIgnoreCase("i"))

morse = "..";

if (toEncode.equalsIgnoreCase("j"))

morse = ".---";

if (toEncode.equalsIgnoreCase("k"))

morse = "-.-";

if (toEncode.equalsIgnoreCase("l"))

morse = ".-..";

if (toEncode.equalsIgnoreCase("m"))

morse = "--";

if (toEncode.equalsIgnoreCase("n"))

morse = "-.";

if (toEncode.equalsIgnoreCase("o"))

morse = "---";

if (toEncode.equalsIgnoreCase("p"))

morse = ".--.";

if (toEncode.equalsIgnoreCase("q"))

morse = "--.-";

if (toEncode.equalsIgnoreCase("r"))

morse = ".-.";

if (toEncode.equalsIgnoreCase("s"))

morse = "...";

if (toEncode.equalsIgnoreCase("t"))

morse = "-";

if (toEncode.equalsIgnoreCase("u"))

morse = "..-";

if (toEncode.equalsIgnoreCase("v"))

morse = "...-";

if (toEncode.equalsIgnoreCase("w"))

morse = ".--";

if (toEncode.equalsIgnoreCase("x"))

morse = "-..-";

if (toEncode.equalsIgnoreCase("y"))

morse = "-.--";

if (toEncode.equalsIgnoreCase("z"))

morse = "--..";

if (toEncode.equalsIgnoreCase("0"))

morse = "-----";

if (toEncode.equalsIgnoreCase("1"))

morse = ".----";

if (toEncode.equalsIgnoreCase("2"))

morse = "..---";

if (toEncode.equalsIgnoreCase("3"))

morse = "...--";

if (toEncode.equalsIgnoreCase("4"))

morse = "....-";

if (toEncode.equalsIgnoreCase("5"))

morse = ".....";

if (toEncode.equalsIgnoreCase("6"))

morse = "-....";

if (toEncode.equalsIgnoreCase("7"))

morse = "--...";

if (toEncode.equalsIgnoreCase("8"))

morse = "---..";

if (toEncode.equalsIgnoreCase("9"))

morse = "----.";

if (toEncode.equalsIgnoreCase("."))

morse = ".-.-";

if (toEncode.equalsIgnoreCase(","))

morse = "--..--";

if (toEncode.equalsIgnoreCase("?"))

morse = "..--..";

return morse;

}

//我们输入的是字符串,所以需要利用上面的函数将字符串整体进行转换

public static String mo(String moo) {
      String  mo1="";
      for (int i = 0; i < moo.length(); i++) {
          mo1+=mosc(Character.toString(moo.charAt(i)));
      }
      
      return mo1;
      
  }

//再加一个打哔哔声的功能,就是把莫尔斯电码打出来

@SuppressWarnings("deprecation")
public static class Player extends JFrame{
  /**
   *
   */
 
  public static void bf(){
      try {
          URL cb;
          File f = new File("C:/Users/86180/Desktop/beep_1.wav"); //引号里面的是音乐文件所在的绝对路径
          cb = f.toURL();
          AudioClip aau;
          aau = Applet.newAudioClip(cb);//加载音频
          aau.play(); //播放音频
          } catch (MalformedURLException e) {
                  e.printStackTrace();
          }
  }
}

//将莫斯码单个字符分析,调用上面的函数发声

public static void beee(String cod) throws InterruptedException {
  for (int i = 0; i < cod.length(); i++) {
      if(cod.charAt(i)=='.') {
          
          System.out.println("beep");
          Player.bf();
          Thread.currentThread().sleep(100);
          }
          else if (cod.charAt(i)=='-') {
              Thread.currentThread().sleep(300);
          }
            
      
  }
}

//主函数
  public static void main(String[] args) {
      new  LXCON();
  }

}

这样就完成了,试试效果如何

设计一个莫尔斯电码电报机相关推荐

  1. 树莓派作品2_莫尔斯电码

    一.创意来源 莫尔斯电码历史悠久,我从小时候就听说过莫尔斯电码了伟大了,不过直至今日我都没有机会过过手瘾,亲手用莫尔斯电码来输出一些有意义的句子. 不过有了树莓派,一切都不成问题,只要两个按钮,就能帮 ...

  2. uva508 莫尔斯电码(Morse Mismatches)

    首先我理解错了题意,在这篇文章找到了UVa 508 Morse Mismatches(莫尔斯电码) 这题的意思是给定一些莫尔斯编码,给定一些已知字典,给定一些编码,求解这些编码的对应原文,如果可以精确 ...

  3. 习题4-6 莫尔斯电码 UVa508

    算法竞赛入门经典(第2版)第4章 函数和递归 习题4-6 莫尔斯电码  UVa508 感悟. 1.阅读书中题目,从网站下载英文原题,重点在看输入输出数据与格式. 2.英文的阅读量还是比较大的,莫尔斯电 ...

  4. 莫尔斯电码对照表_使用莫尔斯电码编码纯文本

    莫尔斯电码对照表 This began as a thought experiment while waiting for patches to install on my system. 这是在等待 ...

  5. 莫尔斯电码(Python)

    莫尔斯电码采用了短脉冲和长脉冲 (分别为点和点划线) 来编码字母和数字. 例如,字母"A"是点划线,"B"是点划线点点.如文件 Mos.txt 文件所示. A ...

  6. java 设计一个geometricobject类,geometricobject类

    (2) Circle 类和 Rectangle 类是 GeometricObject 类的子类,其中应实现 父类的抽象方法. (3) 程序主方法中创建两个几何对象,一个圆和一个矩形,并用 ...... ...

  7. 设计一个矩形类rectangle_万字长文带你捋清六种设计模式的设计原则(建议收藏)...

    对于设计模式,自己很早之前就看了好多本设计模式书籍,其中一些还看了好几遍,也一直希望自己能在编码的时候把这些设计模式用上去.可是,在日常的打码中,用的最多的就是单例,其次是观察者和建造者模式 ( bu ...

  8. 如何更新你的机器学习模型?手把手带你设计一个可持续的预测模型!

    作者 | CloudFactory 译者 | 天道酬勤 责编 | 徐威龙 出品 | AI科技大本营(ID:rgznai100) 高效的机器学习模型需要高质量的数据.训练你的机器学习模型并不是过程中的单 ...

  9. 如何设计一个支撑数亿用户的系统

    欢迎关注方志朋的博客,回复"666"获面试宝典 要设计出一套能支撑几十亿人的系统是很困难的.对于软件架构师来说,这一直是一项很大的挑战,但是,从现在开始,看完我的文章,你就会觉得容 ...

最新文章

  1. 无法启动python怎么办_解决python写的windows服务不能启动的问题
  2. 深度学习核心技术精讲100篇(四十九)-深度学习之关联规则
  3. python容器数据类型_python collections 容器数据类型
  4. 关于代码评审的微博讨论汇集
  5. 转载:opencv中imshow函数运行中断的解决办法
  6. vuefullcalendar怎么判断切换上下月_房间太多、楼上楼下,终极解决家里wifi信号无缝切换问题...
  7. Elastic-job 2.1.3 概述
  8. Python实战从入门到精通第二讲——类
  9. 009 - CSS预处理器less sass SAML SSO 单点登录 websocket socket.io
  10. centos 并发请求数_jmeter 实战分析并发、RPS、RT 公式换算
  11. Windows XP英文版安装中文语言包来解决无法显示中文的方法(转载)
  12. 民间股神:上海殷保华的股票操盘手奇人绝技
  13. 网上一好人收集的PDF制作软件大全
  14. php进销存源码系统开发
  15. 【上汽零束SOA】云管端一体化SOA软件平台系列介绍之一:产品篇
  16. javascript实现简单的新消息语音提醒功能
  17. 第2章 物联网安全基础
  18. pythonround18.67 1,Python语句 print(pow(-3,2), round(18.67,1), round(...
  19. MySQL~Java的数据库编程:JDBC(JDBC的环境配置以及使用)
  20. Python——信号量、条件变量、事件

热门文章

  1. 还在搞公众号互推涨粉?这个小工具助你粉丝躺增!
  2. Matplotlib数据可视化基础
  3. 【20保研】北京航空航天大学计算机学院2019年全国优秀大学生夏令营活动通知...
  4. centos 中英文输入法切换
  5. 连接真机开发安卓(Android)移动app MUI框架 添加购物车等——混合式开发(四)...
  6. 设计思维引导设计实践
  7. 如何建立维基百科页面(Wikipedia)
  8. 最新pr值大于6的网站大全
  9. PostgreSQL do $$ DECLARE 操作
  10. python读音有道-Python 20行简单实现有道在线翻译的详解