2015-05-30 114 views
1

我有一個Java翻譯器,它可以在我從英語翻譯成摩爾斯而不是從莫爾斯翻譯成英文時使用。 如果你能告訴我我需要做些什麼才能使它變得好極了。在我輸入摩爾斯電碼後,當我從莫爾斯語轉到英語時,它只是結束了程序,而不是給我翻譯。需要有關java摩斯密碼翻譯器的幫助

這是我的代碼。

public class project1 { 

public static void main (String [] args) { 

char [] english = { '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' }; 

String [] morse = { ".-" , "-..." , "-.-." , "-.." , "." , "..-." , "--." , "...." , ".." , ".---" , "-.-" , ".-.." , "--" , "-." , "---" , ".--." , "--.-" ,  ".-." , "..." , "-" , "..-" , "...-" , ".--" , "-..-" , "-.--" , "--.." , "|" }; 
    String a = Input.getString ("Please enter MC if you want to translate Morse Code into English, or Eng if you want to translate from English into Morse Code"); 
if (a.equals("MC")) 
    { 
        String b = Input.getString ("Please enter a sentence in Morse Code. Separate each letter/digit with a single space and delimit multiple words with a | .");     

        String[] words = b.split("|"); 
        for (String word: words) 
        { 
            String[] characters = word.split(" "); 
            for (String character: characters)  
            { 
                if (character.isEmpty()) { continue; } 
   for (int m = 0; m < b.length(); m++) 
                { 
                    if (character.equals("inputMorseCode[m]"))     
                        System.out.print(english[ m ]);     
                }     
            } 
            System.out.print(" ");     
        }     
    } 
else if (a.equals("Eng")) 
    { 
        String c = Input.getString ("Please enter a sentence in English, and separate each word with a blank space."); 

        c = c.toLowerCase(); 

        for (int x = 0; x < english.length; x++) 
        { 
            for (int y = 0; y < c.length(); y++) 
            { 
                if (english [ x ] == c.charAt (y)) 

                System.out.print (morse [ x ] + "  "); 


            } 

        } 


    } 

    else  
   { 
       System.out.println ("Invalid Input"); 

    } 

} 
} 
+0

添加更多細節並定義您正面臨的問題... –

+0

嘗試在此行中更改拆分條件:String [] characters = word.split(「」); to:String [] characters = word.split(「」);但我寧願寫我自己的函數,這使得char數組比使用.split – itwasntme

回答

0

首先,既然你都應該搜索莫爾斯字母莫爾斯數組中改變這種

for (int m = 0; m < b.length(); m++) 
      { 
       if (character.equals("inputMorseCode[m]"))  
        System.out.print(english[ m ]);  
      } 

for (int m = 0; m < morse.length; m++) 
      { 
       if (character.equals(morse[m]))  
        System.out.print(english[m]);  
      } 

也就是說,如果您創建將莫爾斯字符串映射到英文字符的Map<String,Character>Map<Character,String>,則代碼會更加高效,反之亦然。他們會替換你的莫爾斯和英文陣列,並且可以讓你在恆定時間內找到英文或莫爾斯字母的映射。

+0

當我這樣做,我得到錯誤:找不到符號(int m = 0; m

+0

@eliwinston對不起爲錯字。它應該是'morse.length' – Eran

+0

我做了更改和編譯,但是當我輸入莫爾斯碼時,它給出了我放錯的答案。 。 。 。在程序中女巫應該顯示H,而是顯示出來,就好像它正在將每個charicter翻譯成自己的單詞一樣,我該如何解決這個問題?謝謝你的幫助 –

0
  1. 你的計數器是錯誤的事情:for (int m = 0; m < b.length(); m++)應該for (int m = 0; m < morse.length; m++)所以你通過字符的字母數量,而不是輸入的字符用戶數量的限制。
  2. 您不會將該字符與莫爾斯字符進行比較,而是將其與字符串"inputMorseCode[m]"進行比較。變化if (character.equals("inputMorseCode[m]"))if (character.equals(morse[m]))