java - 将用户输入转换为字符串,遇到多个字母的问题
问题描述
我正在尝试制作一个从英文字母到莫尔斯电码的转换器,但是在输入多个字母时我遇到了困难。我可以告诉我我的问题是什么,但不是解决方案。我对java很陌生,我知道我这样做的方式非常草率和重复,但这是我迄今为止所知道的。
我做了一些场景,例如,弄清楚输入中有多少个字母,然后转换每个字母;但同样,我不确定这是否可行,或者是否可能。
import java.util.Scanner;
public class JavaPractice {
public static void main(String[] args) {
String morseA;
morseA = "•-";
String morseB;
morseB = "-•••";
String morseC;
morseC = "-•-•";
String morseD;
morseD = "-••";
String morseE;
morseE = "•";
String morseF;
morseF = "••-•";
String morseG;
morseG = "--•";
String morseH;
morseH = "••••";
String morseI;
morseI = "••";
String morseJ;
morseJ = "•---";
String morseK;
morseK = "-•-";
String morseL;
morseL = "•-••";
String morseM;
morseM = "--";
String morseN;
morseN = "-•";
String morseO;
morseO = "---";
String morseP;
morseP = "•--•";
String morseQ;
morseQ = "--•-";
String morseR;
morseR = "•-•";
String morseS;
morseS = "•••";
String morseT;
morseT = "-";
String morseU;
morseU = "••-";
String morseV;
morseV = "•••-";
String morseW;
morseW = "•--";
String morseX;
morseX = "-••-";
String morseY;
morseY = "-•--";
String morseZ;
morseZ = "--••";
Scanner morseInput = new Scanner(System.in);
System.out.println("type a letter and it will be converted into morse code!");
String morseTranslation = morseInput.nextLine();
if (morseTranslation.length() > 0) {
if (morseTranslation.equals("a")) {
System.out.println(morseA);
}
if (morseTranslation.equals("b")) {
System.out.println(morseB);
}
if (morseTranslation.equals("c")) {
System.out.println(morseC);
}
if (morseTranslation.equals("d")) {
System.out.println(morseD);
}
if (morseTranslation.equals("e")) {
System.out.println(morseE);
}
if (morseTranslation.equals("f")) {
System.out.println(morseF);
}
if (morseTranslation.equals("g")) {
System.out.println(morseG);
}
if (morseTranslation.equals("h")) {
System.out.println(morseH);
}
if (morseTranslation.equals("i")) {
System.out.println(morseI);
}
if (morseTranslation.equals("j")) {
System.out.println(morseJ);
}
if (morseTranslation.equals("k")) {
System.out.println(morseK);
}
if (morseTranslation.equals("l")) {
System.out.println(morseL);
}
if (morseTranslation.equals("m")) {
System.out.println(morseM);
}
if (morseTranslation.equals("n")) {
System.out.println(morseN);
}
if (morseTranslation.equals("o")) {
System.out.println(morseO);
}
if (morseTranslation.equals("p")) {
System.out.println(morseP);
}
if (morseTranslation.equals("q")) {
System.out.println(morseQ);
}
if (morseTranslation.equals("r")) {
System.out.println(morseR);
}
if (morseTranslation.equals("s")) {
System.out.println(morseS);
}
if (morseTranslation.equals("t")) {
System.out.println(morseT);
}
if (morseTranslation.equals("u")) {
System.out.println(morseU);
}
if (morseTranslation.equals("v")) {
System.out.println(morseV);
}
if (morseTranslation.equals("w")) {
System.out.println(morseW);
}
if (morseTranslation.equals("x")) {
System.out.println(morseX);
}
if (morseTranslation.equals("y")) {
System.out.println(morseY);
}
if (morseTranslation.equals("z")) {
System.out.println(morseZ);
}
System.out.println(morseTranslation.charAt(0) + " " + morseTranslation.charAt(1));
}
}
}
// if statements
// long but might work
// charAt find out how many letters they typed in/inputed
// make something that uses chatAt for each character depending on how many there are,
// and individually translate each letter
解决方案
我建议您将每个字母及其莫尔斯翻译存储在两个单独的数组中或作为映射中的键值对。例如 :
String [] morsetrans = {"•-","-•••", and so on};
String [] letters = {"a","b", and so on};
我认为这将是一种更简单的做事方式。您只需要相应地编写逻辑以匹配数组中的字母,并使用字母的索引从对应于莫尔斯翻译的数组中获取相应的莫尔斯翻译。
对于“a”索引为 0,其对应的更多翻译位于 morsetrans 数组中的相同索引中。
推荐阅读
- docker - 如何从 Jenkins 构建作业在 Linux 部署服务器上部署 docker-compose 文件?
- css - 在页面上延迟应用 css
- c# - 用列表框中的一些文本分隔字符串
- php - Docker php-fpm 作为 www-data 运行
- wix - Wix 安装后和卸载前可执行文件
- javascript - 去抖内部的开关盒内部的正则表达式不起作用
- sql - 时间戳间隔上的 Postgres 语法错误
- apache-spark - 组合(不是 sql 连接)2 个 spark 数据帧
- openssl - EVP_EncryptUpdate 缺少 4 个字节
- kotlin - Freemarker 为“TheApp”对象提供未解决的参考