我正在尝试写一些将英语翻译成摩尔斯电码的东西,反之亦然。我让英语到莫尔斯跑得很好,但我很难用另一种方式转换它。我的意思是使用|
作为单词之间的空格,因此- --- | -... .
表示“成为”。任何人都可以告诉我case:1
中的代码部分有什么问题吗?
public class Project {
public static void main(String[] args)
{
String[] morse = { ".- ", "-... ", "-.-. ", "-.. ", ". ", "..-. ", "--. ", ".... ", ".. ",
".--- ", "-.- ", ".-.. ", "-- ", "-. ", "--- ", ".--. ", "--.- ", ".-. ", "... ", "- ", "..- ",
"...- ", ".-- ", "-..- ", "-.-- ", "--.. ", "|" };
String[] 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", " " };
int a;
a = Input.getInt("Enter 1 for Morse to English or enter 2 for English to Morse.");
switch (a)
{
case 2:
{
String toMorse = new String();
toMorse = Input.getString("Enter a sentence.");
toMorse = toMorse.toUpperCase();
for (int i = 0; i < toMorse.length(); i++)
{
char x = toMorse.charAt(i);
if (x == ' ') System.out.print(" | ");
else System.out.print(morse[x - 'A']);
}
break;
}
case 1:
{
String toEnglish = new String();
toEnglish = Input.getString("Enter your Morse code.");
String[] parts = toEnglish.split("|");
for (int x = 0; x < parts.length; x++)
{
if (parts.equals(morse[x])) System.out.println(alphabet[x]);
}
break;
}
default:
{
System.out.println("Invalid Response");
}
}
}
}
答案 0 :(得分:2)
split使用正则表达式命令,|
是正则表达式中的特殊运算符。而不是|
,您需要\\|
。
更改
String[] parts = toEnglish.split("|");
到
String[] parts = toEnglish.split("\\|");
当你这样做时:
if (parts.equals(morse[x]))
然后您将引用与字符串进行比较,这不是您想要做的事情。
您可能想要这样做:
if (parts[x].equals(morse[x]))
现在,parts[x]
包含一个字符串。我建议您阅读String#split。
答案 1 :(得分:0)
您可能意味着continue
而不是break
continue
启动外循环的下一次迭代break
跳出循环并在for循环结束后执行第一行代码。