Java 英语到摩尔斯电码转换器,我怎样才能使它更有效?

Java 英语到摩尔斯电码转换器,我怎样才能使它更有效?,java,hashmap,converter,morse-code,Java,Hashmap,Converter,Morse Code,//我只是一个初学者,这是我的第一个程序,它的工作很好,但有什么办法我可以使它更好 import java.util.*; public class NewClass1 { public static void main(String[] args) { Character alphabet [] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's',

//我只是一个初学者,这是我的第一个程序,它的工作很好,但有什么办法我可以使它更好

import java.util.*;
public class NewClass1 {

public static void main(String[] args) {

Character alphabet [] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', ' '};
String morseCode [] = {".- ", "-... ", "-.-. ", "-.. ", ". ", "..-. ", "--. ", ".... ", ".. ", ".--- ", "-.- ", ".-.. ", "-- ", "-. ", "--- ", ".--. ", "--.- ", ".-. ", "... ", "- ", "..- ", "...- ", ".-- ", "-..- ", "-.-- ", "--.. ", "| "};

//putting alphabets and morsecode in HashMap
Map<Character, String> morseCodes = new HashMap<>();
for(int i = 0; i < alphabet.length; i++)
{
    morseCodes.put(alphabet[i], morseCode[i]);
}

//Took user input and converted it into LowerCase Character Array
Scanner sc = new Scanner(System.in);
String input = sc.nextLine();
char[] translate = input.toLowerCase().toCharArray();

//Translating user input(translate[]) using for loop
for(int j=0; j<input.length(); j++){
    System.out.print(morseCodes.get(translate[j]));
}
}
}
import java.util.*;
公共类新类别1{
公共静态void main(字符串[]args){
字符字母表[]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',''};
字符串morseCode[]={“-”、“-…”、“-.-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、”、”;
//将字母表和莫尔斯电码放入HashMap
Map morseCodes=新HashMap();
for(int i=0;i对于(intj=0;j您的代码很好,但我认为这个解决方案更有效

import java.util.*;
public class HelloWorld {

public static void main(String[] args) {

      String morseCode [] = {".- ", "-... ", "-.-. ", "-.. ", ". ", "..-. ", "--. ", ".... ", ".. ", ".--- ", "-.- ", ".-.. ", "-- ", "-. ", "--- ", ".--. ", "--.- ", ".-. ", "... ", "- ", "..- ", "...- ", ".-- ", "-..- ", "-.-- ", "--.. ", "| "};

       //Took user input and converted it into LowerCase Character Array
       Scanner sc = new Scanner(System.in);
       String input = sc.nextLine();
       char[] translate = (input.toLowerCase()).toCharArray();

       //Translating user input(translate[]) using for loop
       for (int j = 0; j < translate.length; j++) {
            System.out.print(morseCode[translate[j] - (int)'a']);
       }
}
}
import java.util.*;
公共类HelloWorld{
公共静态void main(字符串[]args){
字符串morseCode[]={“-”、“-…”、“-.-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、”、”;
//接受用户输入并将其转换为小写字符数组
扫描仪sc=新的扫描仪(System.in);
字符串输入=sc.nextLine();
char[]translate=(input.toLowerCase()).toCharArray();
//使用for循环转换用户输入(translate[])
对于(int j=0;j
我删除了hashmap,这在某些情况下是有效的,但这里不需要这种数据结构

@Shirkam解释:


“通过这样做,您可以将字母‘a’的ASCII值转换为int(我认为是97)。这样做可以将translate[j]的ASCII值转换为int将比例值设置为0,而不是从97开始。这允许您直接使用数组,因为它们都从0开始。在“恢复”中,您将ASCII值向左移动,以便能够直接使用数组。”

您可以正确地缩进它。这实际上不是一个特定的编程问题。我相信这类问题在堆栈交换中更受欢迎
(input.toLowerCase())中的括号
不需要,只需删除它们我投票结束这个问题,因为这是一个代码审查的请求,不是一个具体的问题。嗨,你太棒了,我只是不明白主要的事情。你能让我明白这行代码是如何执行的吗?morseCode[translate[j]-(int)'a']@TosifKhan通过这样做,您可以将字母“a”的ASCII值转换为int(我想是97)。这样做可以将
translate[j]的ASCII值转换为int
到0刻度值,而不是从97开始。这允许您直接使用数组,因为它们都从0开始。在resume中,您将ASCII值移动到左侧,以便能够直接使用数组。此外,@Cylexx请记住,您的答案完全是功能性的,因为
'、
'|'
不在小写字符之后act,
,“
在ASCII表中是44,
”|“
是124,因此需要特殊处理。@Shirkam我同意,我会用你的名字添加你的评论我的答案