当前位置:网站首页>使用枚举实现英文转盲文
使用枚举实现英文转盲文
2022-07-07 18:42:00 【No Bug】
解释一下,可能大家觉得转盲文很搞笑,盲人又看不见。确实,单纯就转盲文确实没意义,但是后续会准备一台盲文打印机配合使用!过几天也会更新中文转盲文。
我深知还有程序还有许多不完善的地方,会一步步完善的。
英文转盲文主要是利用ASCII码对照表
先理清思路:
1.首先思考改如何把盲文表示出来。
2.由于英文盲文不区分大小写,需把所有字母转换为大写。
3.怎么定义字母与盲文之间的关系。
理清思路后一个个解决。
解决问题:
1.首先思考改如何把盲文表示出来。
不管哪种盲文,都是由六个点,共三行组成。方便表示就用6位二进制,逗号表示换行。0表示那个点没有,1表示有。
如:
A的盲文是,表示为 10,00,00
H的盲文是,表示为 10,11,00
2.由于英文盲文不区分大小写,需把所有字母转换为大写。
java使用toUpperCase()方法可以把字符串中的所有字母转为大写。
然后使用 toCharArray() 方法把字符串转化为一个字符数组。
3.怎么定义字母与盲文之间的关系。
这里使用了枚举法,使用比较方便,也比较好看。
如下:
package tobraille1.enums;
/**
* 枚举出26个字母的盲文
*/
public enum BrailleEnum {
A("10,00,00"),
B("10,10,00"),
C("11,00,00"),
D("11,01,00"),
E("10,01,00"),
F("11,10,00"),
G("11,11,00"),
H("10,11,00"),
I("00,11,00"),
J("01,11,00"),
K("10,00,10"),
L("10,10,10"),
M("11,00,10"),
N("11,01,10"),
O("10,01,10"),
P("11,10,10"),
Q("11,11,10"),
R("10,11,10"),
S("01,10,10"),
T("01,11,10"),
U("10,00,11"),
V("10,10,11"),
W("01,11,01"),
X("11,00,11"),
Y("11,01,11"),
Z("10,01,11");
private String braille;
BrailleEnum(String braille) {
this.braille = braille;
}
public String getBraille() {
return braille;
}
public void setBraille(String ASCII) {
this.braille = ASCII;
}
}
随便简单介绍一下枚举类。
1.在创建enum类的时候,Java就默认这个类继承了enum,所以enum类是无法再继承其他类。
2.在enum类中,创建的实例必须放在类的最上面,多个实例用逗号隔开,如果实例化常量没有初始化,系统会默认提供一个无参的构造方法
3.如果实例初始化了,就必须创建带有对应参数的构造函数。
4、如果枚举类中有抽象方法,注意抽象方法要放在实例的后面。则每个实例都需要实现枚举类中的这个抽象方法。
public enum Season {
SPING("春天"){
@Override public String doPlay() {
return "春天";
}
},SUMMMER("夏天"){
@Override public String doPlay() {
return "夏天";
}
},FALL("秋天"){
@Override public String doPlay() {
return "秋天";
}
}, WINTER("冬天"){
@Override public String doPlay() {
return "冬天";
}
};private final String seansonName;
Season(String seansonName) {
this.seansonName = seansonName;
}public abstract String doPlay();
}
最后附上英文转盲文的源码:
package tobraille1.service.serviceImpl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import tobraille1.POJO.EnASCIIToBraille;
import tobraille1.POJO.ToBrailleMsg;
import tobraille1.common.R;
import tobraille1.dao.ToBrailleMsgDao;
import tobraille1.enums.BrailleEnum;
import java.util.Map;
@Service
public class ToBrailleImpl extends ServiceImpl<ToBrailleMsgDao, ToBrailleMsg> {
public static R<String> toBraille(ToBrailleMsg brailleMessage) {
try {
//英文翻译盲文
if ("en-us".equals(brailleMessage.getLanguage())) {
String upperCase = brailleMessage.getText().toUpperCase();
char[] chars = upperCase.toCharArray();
String[] s = new String[chars.length];
int i = 0;
for (char c : chars) {
s[i] = BrailleEnum.valueOf(String.valueOf(c)).getBraille();
System.out.println(s[i]);
i++;
}
return R.success(s);
}
//中文翻译盲文
else {
return R.success("");
}
} catch (Exception e) {
e.printStackTrace();
return R.error("出现错误,翻译失败");
}
}
public static void main(String[] args) {
ToBrailleMsg toBrailleMsg = new ToBrailleMsg();
toBrailleMsg.setLanguage("en-us");
toBrailleMsg.setText("hello");
toBraille(toBrailleMsg);
}
}
运行结果。
边栏推荐
- AIRIOT助力城市管廊工程,智慧物联守护城市生命线
- 使用camunda做工作流设计,驳回操作
- 恶魔奶爸 A3阶段 近常速语流初接触
- 字符串中数据排序
- 华为CE交换机下载文件FTP步骤
- 静态测试工具
- Measure the height of the building
- How does codesonar help UAVs find software defects?
- 一. 基础概念
- Details of C language integer and floating-point data storage in memory (including details of original code, inverse code, complement, size end storage, etc.)
猜你喜欢
Small guide for rapid formation of manipulator (12): inverse kinematics analysis
Details of C language integer and floating-point data storage in memory (including details of original code, inverse code, complement, size end storage, etc.)
[philosophy and practice] the way of program design
机械臂速成小指南(十一):坐标系的标准命名
How to meet the dual needs of security and confidentiality of medical devices?
Make this crmeb single merchant wechat mall system popular, so easy to use!
CodeSonar通过创新型静态分析增强软件可靠性
Mongodb learn from simple to deep
最新版本的CodeSonar改进了功能安全性,支持MISRA,C ++解析和可视化
Helix QAC 2020.2 new static test tool maximizes the coverage of standard compliance
随机推荐
Small guide for rapid formation of manipulator (11): standard nomenclature of coordinate system
The latest version of codesonar has improved functional security and supports Misra, c++ parsing and visualization
[MySQL - Basic] transactions
万字总结数据存储,三大知识点
Codesonar enhances software reliability through innovative static analysis
Prometheus remote_write InfluxDB,unable to parse authentication credentials,authorization failed
Micro service remote debug, nocalhost + rainbow micro service development second bullet
Measure the height of the building
Tensorflow2. How to run under x 1 Code of X
恶魔奶爸 B1 听力最后壁垒,一鼓作气突破
I Basic concepts
寫一下跳錶
Cantata9.0 | new features
使用camunda做工作流设计,驳回操作
字符串中数据排序
复杂因子计算优化案例:深度不平衡、买卖压力指标、波动率计算
深度学习模型压缩与加速技术(七):混合方式
解决/bin/sh进去的容器运行可执行文件报not found的问题
[résolution] le paquet « xxxx» n'est pas dans goroot
When easygbs cascades, how to solve the streaming failure and screen jam caused by the restart of the superior platform?