婴语翻译器

news/2025/1/11 4:24:05/文章来源:https://www.cnblogs.com/jinnandu/p/18636008

婴语翻译器

用Java写的一个非常简单的程序,可以将一句话翻译成啊吧啊吧,使用了Java Swing。

一. UI

UI 使用java 的Swing组件,上下两个JTextArea ,两个button。
两个时间监听,获取上面文本框的内容加密后输出到下面文本框,获取下面文本框的内容解密后输出到上面文本框。

public class EncryptionDecryptionGUI extends JFrame {private final JTextArea upperTextArea;private final JTextArea lowerTextArea;public EncryptionDecryptionGUI() {setTitle("啊吧翻译器 @jinnanDu");setSize(800, 1000);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setLayout(new BorderLayout());// 设置字体Font font = new Font("SimSun", Font.PLAIN, 16);// 创建并添加上面的文本upperTextArea = new JTextArea(5, 20);upperTextArea.setLineWrap(true);upperTextArea.setWrapStyleWord(true);upperTextArea.setPreferredSize(new Dimension(500, 120));upperTextArea.setFont(font);JPanel upperPanel = new JPanel();upperPanel.add(new JLabel("输入加密:"));upperPanel.add(upperTextArea);add(upperPanel, BorderLayout.NORTH);// 创建并添加下面的文本lowerTextArea = new JTextArea(10, 25);lowerTextArea.setLineWrap(true);lowerTextArea.setWrapStyleWord(true);lowerTextArea.setPreferredSize(new Dimension(500, 750));lowerTextArea.setFont(font);JScrollPane lowerScrollPane = new JScrollPane(lowerTextArea);add(lowerScrollPane, BorderLayout.CENTER);JPanel lowerPanel = new JPanel();lowerPanel.add(new JLabel("输入解密:"));lowerPanel.add(lowerTextArea);add(lowerPanel, BorderLayout.CENTER);// 创建并添加按钮JButton encryptButton = new JButton("加密");JButton decryptButton = new JButton("解密");abaaba ab = new abaaba();encryptButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {String upInput = upperTextArea.getText();String lowShow = ab.encryAba(upInput);lowerTextArea.setText(lowShow);}});decryptButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {String lowInput = lowerTextArea.getText();String upShow = ab.decryAba(lowInput);upperTextArea.setText(upShow);}});JPanel buttonPanel = new JPanel();buttonPanel.add(encryptButton);buttonPanel.add(decryptButton);add(buttonPanel, BorderLayout.SOUTH);setVisible(true);}
}

二. Encryption&Decryption

程序非常简单,核心就是以下加密解密两个方法。

  • 加密:将字符串二进制表示转换为由中文字符'吧'和'啊'组成的字符串。
  • 解密:将啊吧转换为人类可读的字符串。
//将字符串转换为二进制public String encryAba(String chineseString){if(chineseString.isEmpty()){throw new NullPointerException("加密的数据不能为空");}byte[] bytes = chineseString.getBytes();StringBuilder binaryString = new StringBuilder();for (byte b : bytes) {// 将每个字节转换为8位二进制字符串for (int i = 7; i >= 0; i--) {binaryString.append((b & (1 << i))!= 0? '吧' : '啊');}}return binaryString.toString();}
public String decryAba(String aba){if(aba.isEmpty()){throw new NullPointerException("解密的数据不能为空");}StringBuilder binaryString = new StringBuilder();for (char c : aba.toCharArray()) {if (c == '啊') {binaryString.append('0');} else if (c == '吧') {binaryString.append('1');}}if (binaryString.length() % 8!= 0) {throw new IllegalArgumentException("二进制字符串长度必须是8的倍数");}byte[] bytes = new byte[binaryString.length() / 8];for (int i = 0; i < binaryString.length(); i += 8) {String byteBinary = binaryString.substring(i, i + 8);bytes[i / 8] = (byte) Integer.parseInt(byteBinary, 2);}return new String(bytes);}

三. Package

打包成jar,再使用Launch4j将jar转换为windows 可执行的exe。
双击执行,效果如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/861239.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

字体推荐,等宽字体

nerd 字体网页 https://www.nerdfonts.com/Hurmit Nerd Font Mono DejaVu Sans Mono ConsolasFiraCode   hack Meslo

自托管!一款开源的网站统计工具!

Umami —— 一个开源的、以隐私为中心的网站分析工具,是 Google Analytics 的开源替代品,提供网站流量、用户行为分析和访问统计等功能。大家好,我是 Java陈序员。 无论是企业开发,还是个人独立开发,往往都有自己的网站产品。 为了更好的了解掌握网站的访问情况,常常需要…

介绍1个简单好用的随手画圆网站,关键还免费,挑战单手画圆啦

# 网站介绍无聊的时候不知道画什么,解决画画的烦恼,从单手画圆开始 网站网址https://whattodraw.art 功能特点1、画画的想法从简单、中等、难根据选择随机生成 2、免费无登录不注册3、有个转盘,自定义画画的想法随机生成4、从最简单的开始,单手画圆,看看你的得分吧 硅谷王…

项目管理,如何洞察业务痛点

洞察项目管理中的业务痛点需要明确常见痛点、建立有效的沟通机制、制定明确的项目计划、实施有效的监控和评估以及关注团队协作和激励等方面。通过这些方法的应用和实践经验的积累,可以不断提高项目管理水平并确保项目的成功实施。在项目管理中,洞察业务痛点对于确保项目的成…

TCP/IP四层模型与OSI参考模型

TCP/IP四层模型:1.链路层(数据链路层/网络接口层):包括操作系统中的设备驱动程序、计算机中对应的网络接口卡 2.网络层(互联网层):处理分组在网络中的活动,比如分组的选路。 3.运输层:主要为两台主机上的应用提供端到端的通信。 4.应用层:负责处理特定的应用程序细节…

欧拉OpenEuler下SSH或SCP免密连接配置方法

以下操作均在本地服务器上进行: 一、生成公钥和私钥 ssh-keygen -t rsa二、将公钥复制到远程服务器 ssh-copy-id username@remote_server三、配置免密登录 ssh username@remote_server四、 虽然免密登录提高了工作效率和安全性,但也有一些注意事项需要牢记。 首先,务必保护好…

springboot-data-jdbc优劣

经过一段时间对springboot-data-jdbc的使用,总结了一下几点: 优点:通过配置外键关联,在保存一个实体类的情况下,会自动保存对应的外键信息(比如上图实体类如果设置了legItems和orderDetails的值,则会保存对应的数据) 通过配置外键关联,在查询一个实体类的情况下,会自…

解密Prompt45. 再探LLM Scalable Oversight -辩论、博弈哪家强

以上两个方向相对正交分别从Verifier和Generator两个方去尝试解决Scalable Oversight的问题,今天再聊一个相对Hybrid的方向,通过Verifier和Generator相互博弈来同时提升双方实力。这里分别介绍Anthropic的辩论法,和OpenAI的博弈法之前我们已经介绍过几个针对Scalable Oversi…

读数据保护:工作负载的可恢复性21构建恢复站点

构建恢复站点1. 恢复站点 1.1. 恢复站点是一个真实或虚拟的地点,用来在计算环境遭到灾难时取代该环境 1.2. 当年的恢复站点总是由另一个数据中心充当,而且那个数据中心最好离你们目前的这个比较远 1.3. 现在一般都不采用实体的数据中心了,而且这个恢复站点一般也不会由你们的…

OpenCL组织结构与C++开发

OpenCL工作组织结构OpenCL工作组织结构,如图1-35所示。 图1-35 OpenCL工作组织结构Khronos工作组织结构与注册Khronos工作组织结构与注册,如图1-36所示。 图1-36 Khronos工作组织结构与注册OpenCL使用C++开发1)开源编译器前端替代OpenCL C++内核语言规范版本,在OpenCL文档同…

OpenCL程序流程与开源项目

执行OpenCL程序流程 1)内核程序是可执行代码的基本单元(类似于C函数)。 2)OpenCL程序是内核和函数的集合。 3)主机应用程序使用OpenCL命令队列,向设备发送内核和数据传输功能。 4)通过将命令排入队列,内核和数据传输功能可以与主机代码,进行异步并行执行。 5)作为一种…

mac配置chromedriver

1、下载chromedriver 2、手动打开一次(因为程序会弹一个框,第一次需要手动点了) 3、配置环境变量: vim ~/.bash_profile 加入: export PATH="***/chromedriver:$PATH" source ~/.bash_profile 4、命令检查: 如果发现版本不对,要么检查配置文件重新source,要么…