Java-分割莫尔斯,不识别单个莫尔斯字符
我在拔头发… 是的,到处都贴着,不,我似乎不能对我的错误保持清醒。我知道我在尝试处理字符和字符串的细微差别。但是我的输出没有帮助,所以也许其他人可以?下面是我得到的输出和给我的代码 输入:Java-分割莫尔斯,不识别单个莫尔斯字符,java,Java,我在拔头发… 是的,到处都贴着,不,我似乎不能对我的错误保持清醒。我知道我在尝试处理字符和字符串的细微差别。但是我的输出没有帮助,所以也许其他人可以?下面是我得到的输出和给我的代码 输入: .. 无输出 此输入 --- 输出 e e e 这个输入 …|-- 输出 e e e 只有第一个莫尔斯“字符”(应为“s”)忽略管道和/或空格后的剩余字符 public static void morseToEnglish() { String englishArray[] = {"a", "b",
..
无输出 此输入
---
输出
e
e
e 这个输入 …|--
输出
e
e
e 只有第一个莫尔斯“字符”(应为“s”)忽略管道和/或空格后的剩余字符
public static void morseToEnglish() {
String englishArray[] = {"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 morseArray[] = {".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".--- ", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."};
//String translatedText = "";
//String newEnglishChar;
System.out.println("Enter Morse, separate each letter or digit with a single space, separate words with '|' ");
Scanner input = new Scanner(System.in);
String morseSentence = input.nextLine();
String[] words = morseSentence.split("|");
for (String word: words) {
String[] morseChars = word.split(" ");
for (String morseChar : morseChars) {
if (morseChar.isEmpty()) { continue; }
for (int i = 0; i < words.length; i++) {
if (morseChar.equals(morseArray[i])) {
System.out.println(englishArray[i]);
//newEnglishChar = englishArray[i];
//translatedText = translatedText + newEnglishChar;
}
}
}
}
//System.out.println(translatedText);
}
公共静态无效morseToEnglish(){
字符串英文字符[]={“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”};
字符串morserray[]={“-”、“-…”、“-.-”、“-…”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”;
//字符串translatedText=“”;
//字符串newEnglishChar;
System.out.println(“输入莫尔斯,用一个空格分隔每个字母或数字,用“|”分隔单词”);
扫描仪输入=新扫描仪(System.in);
字符串morseContent=input.nextLine();
String[]words=morssentence.split(“|”);
for(字符串字:字){
String[]morseChars=word.split(“”);
for(字符串morseChar:morseChars){
if(morseChar.isEmpty()){continue;}
for(int i=0;i
我没有收到任何编译错误。代码运行良好,我只是告诉它错误的指令,所以我的输出不是我想要的。在我看来,扫描器正在输入莫尔斯电码,例如“…”,并将其翻译为三个e而不是一个s。我尝试过例外情况(如果(!.contains))(或多或少),但它不起作用,而且似乎条件太苛刻。
我觉得我只是没有以正确的方式对待正确的对象。真的,如果第二种情况(两个莫尔斯字符,用空格分隔)能够正常工作,我会很好。在这一点上,一个莫尔斯字符可能太多了。
大问题:我在哪里告诉Java可以将三个点视为三个独立的字母?为什么?。。。。。。我希望这会有所帮助。您的代码有两个问题:
- 由于
是一个,因此您需要使用|
morsecontent.split(“[|]”)和
- 您在内部循环中使用了错误的
:应该是length
而不是morserray.length
words.length
morserray
中的所有字符串都是唯一的,因此一旦找到匹配项,就可以在嵌套循环中设置一个break
注意:您可以使用关联容器进行映射,而无需循环()。您的代码有两个问题:
- 由于
是一个,因此您需要使用|
morsecontent.split(“[|]”)和
- 您在内部循环中使用了错误的
:应该是length
而不是morserray.length
words.length
morserray
中的所有字符串都是唯一的,因此一旦找到匹配项,就可以在嵌套循环中设置一个break
注意:您可以使用关联容器来进行映射,而无需循环()。您编写的代码中有几个问题
Map
,因为您关联了两个值public static Map<String, String> init() {
HashMap<String, String> map = new HashMap<>();
map.put(".", "e");
map.put("...", "h");
//... All the other letters
return map;
}
public static void main(String ... args) {
Map<String, String> map = init();
System.out.println("Enter Morse, separate each letter or digit with a single space, separate words with '|' ");
Scanner input = new Scanner(System.in);
String morseSentence = input.nextLine();
for (String word: morseSentence.split("\\|")) {
for (String morseChar : word.split(" ")) {
if (!morseChar.isEmpty()) {
System.out.print(map.get(morseChar));
}
}
System.out.print(" ");
}
}
publicstaticmap init(){
HashMap=newHashMap();
地图放置(“.”,“e”);
地图放置(“…”,“h”);
//…所有其他信件
返回图;
}
公共静态void main(字符串…参数){
Map=init();
System.out.println(“输入莫尔斯,用一个空格分隔每个字母或数字,用“|”分隔单词”);
扫描仪输入=新扫描仪(System.in);
字符串morseContent=input.nextLine();
for(字符串字:morssentence.split(“\\\\”)){
for(字符串morseChar:word.split(“”){
如果(!morseChar.isEmpty()){
系统输出打印(map.get(morseChar));
}
}
系统输出打印(“”);
}
}
您编写的代码中有几个问题
Map
,因为您关联了两个值public static Map<String, String> init() {
HashMap<String, String> map = new HashMap<>();
map.put(".", "e");
map.put("...", "h");
//... All the other letters
return map;
}
public static void main(String ... args) {
Map<String, String> map = init();
System.out.println("Enter Morse, separate each letter or digit with a single space, separate words with '|' ");
Scanner input = new Scanner(System.in);
String morseSentence = input.nextLine();
for (String word: morseSentence.split("\\|")) {
for (String morseChar : word.split(" ")) {
if (!morseChar.isEmpty()) {
System.out.print(map.get(morseChar));
}
}
System.out.print(" ");
}
}
publicstaticmap init(){
HashMap=newHashMap();
地图放置(“.”,“e”);
地图放置(“…”,“h”);
//…所有其他信件
返回图;
}
公共静态void main(字符串…参数){
Map=init();
System.out.println(“输入莫尔斯,用一个空格分隔每个字母或数字,用“|”分隔单词”);
扫描仪输入=新扫描仪(System.in);
字符串morseContent=input.nextLine();
for(字符串字:morssentence.split(“\\\\”)){
for(字符串):单词