我的程序是將輸入從英語轉換爲莫爾斯碼,反之亦然。首先,它會提示用戶是否要輸入莫爾斯電碼或英文。之後,它將一個轉換爲另一個。我正在研究如何將莫爾斯電碼翻譯成英文。我正在使用這個包含莫爾斯字母的數組:使用拆分方法將字符串轉換爲字符
String[] codes = {".- ", "-... ", "-.-. ", "-.. ", ". ", "..-. ", "--. ", ".... ", ".. ", ".--- ", "-.- ", ".-.. ", "-- ", "-. ", "--- ", ".--. ", "--.- ", ".-. ", "... ", "- ", "..- ", "...- ", ".-- ", "-..- ", "-.-- ", "--.. ", ".---- ", "..--- ", "...-- ", "....- ", "..... ", "-.... ", "--... ", "---.. ", "----. ", "----- ", "| "};
用戶輸入必須以特定方式格式化。在輸入莫爾斯電碼時,代表一個字母的每組字符必須用空格分隔。每個完整的單詞必須用直線分隔(「|」)。標點和大寫是沒有必要的。
下面是一個例子來闡明:
輸入:
- .... .. ... | .. ... | .- | - . ... -
輸出:
THIS IS A TEST
我的代碼如下:
import javax.swing.JOptionPane;
public class ProjectOne
{
public static void main (String[] args)
{
String decision = getString ("Will you be typing in English or Morse Code?");
String english = "english";
String morse = "morse";
String[] codes = {".- ", "-... ", "-.-. ", "-.. ", ". ", "..-. ", "--. ", ".... ", ".. ", ".--- ", "-.- ", ".-.. ", "-- ", "-. ", "--- ", ".--. ", "--.- ", ".-. ", "... ", "- ", "..- ", "...- ", ".-- ", "-..- ", "-.-- ", "--.. ", ".---- ", "..--- ", "...-- ", "....- ", "..... ", "-.... ", "--... ", "---.. ", "----. ", "----- ", "| "};
char[] letters = {'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', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', ' '};
if (decision.equalsIgnoreCase(morse))
{
for (int a = 0; a < codes.length; a++)
{
codes[a] = codes[a].trim();
}
String input = getString ("Enter a phrase to be translated to English:");
String[] parts = input.split(" ");
for (int n = 0; n < parts.length; n++)
{
for (int i = 0; i < parts.length; ++i)
{
if (parts[n].equals(codes[i]))
{
System.out.print(letters[i]);
}
}
}
}
else if (decision.equalsIgnoreCase(english))
{
//Translates English to Morse Code
}
else
{
System.out.println("Invalid Input - Type 'English' or 'Morse'");
}
}
public static String getString(String paramString)
{
String str = JOptionPane.showInputDialog(paramString);
return str;
}
}
我的問題是英語翻譯ish沒有正確顯示。當嘗試我上面提供的示例時,輸出將顯示「HIIAE」。我的目的是首先從包含莫爾斯電碼字符的數組中的每個字符串的末尾修剪額外的空間,然後將用戶的輸入按每個字母之間的空格分開並匹配各個部分,最後顯示相應的字符與英文字母的數組。我能做些什麼來讓我的程序將摩爾斯電碼中的用戶輸入翻譯成英文?
你說你自己,話是對用「'|'」分隔。你爲什麼忽略這個事實? –
@ PM77-1 - 他不會無視它的。他將管道字符翻譯成空格(以分隔單詞)。這種情況是每個數組中的最後一項。 – DaoWen
你的第二個循環似乎有錯誤的界限:'for(int i = 0; i
DaoWen