2014-12-06 5 views
0

영어로 모스 부호 부분은 잘 작동하지만 모스 부호는 영어로하지 않습니다 ... 나는 계속 E와 T를 얻습니다. 그렇게 할 수있는 방법이 있습니까? 모스 코드 글자 사이에는 "모든 문자"를 가지지 않고 다른 문자를 알 수있는 공간이 있습니다. = E 및 모든 "-"= TMorse Code to English, (If statement?)

모르스 코드에서 영어로 갈 때 공백을 확인하기 위해 코드를 얻으려고합니다. 제대로 작동하지 않습니다.

을 Heres 내 전체 코드 : 당신이 단어를 분할, 다른 하나에서 번역 할 때 그런

int totalLetters = 26; 
HashMap<String, String> englishToMorse = new HashMap<String, String>(totalLetters); 
HashMap<String, String> morseToEnglish = new HashMap<String, String>(totalLetters); 

for (int i = 0; i < Alphabet.length; i++) { 
    englishToMorse.put(Alphabet[i], Morse[i]); 
    morseToEnglish.put(Morse[i], Alphabet[i]); 
} 

:

import java.util.Scanner; 

public class MorseCode { 
    public static void main(String [] args){ 


    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","1", "2","3","4","5","6","7","8","9","0"," "}; 
    String Morse [] = {".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--..",".----","..---","...--","....-",".....","-....","--...","---..","----.","-----"," "}; 

    //Decide Either English to Morse or Morse to English 



    System.out.println("For English-->Morse (Press 'E')\n" 
        + "For Mosrse-->English (Press 'M')"); 

    Scanner Input = new Scanner(System.in); 
    String Response = Input.next(); 

    //For invalid Input 
    while(!(Response.equalsIgnoreCase("E") || Response.equalsIgnoreCase("M"))){ 
     System.out.println("Invalid input, Please type in E or M"); 
     Response = Input.next(); 
    } 
    //English to Morse-Code 
    if(Response.equalsIgnoreCase("E")){ 

     System.out.println("Type in English"); 
     Input.nextLine(); 
     String Ephrase = Input.nextLine(); 
     Ephrase = Ephrase.toUpperCase(); 

     for(int count = 0; count < Ephrase.length(); count++) 
     { 
      for(int index = 0; index < Alphabet.length; index++) 
      { 
       //Matches English to Morse and Prints 
       if(Ephrase.substring(count, (count+1)).equals(Alphabet[index])) 
        System.out.print(Morse[index] + " "); 
      } 
     } 


    } 
    //Morse-Code to English 
    else if(Response.equalsIgnoreCase("M")){ 

     System.out.println("Type in MorseCode"); 
     Input.nextLine(); 
     String Mphrase = Input.next(); 

     for(int count = 0; count < Mphrase.length(); count++ ) 
     { 
      for (Scanner s = new Scanner(Mphrase); s.hasNext();) { 

       String letter = s.next(); 

       for(int index = 0; index < Morse.length; index++) { 

        if(letter.equals(Morse[index])) { 

         System.out.println(Alphabet[index]); 
         break; 
        } 
       } 


      } 

     } 



} 
    }} 
+0

단계를 통해 것 같아요 ... –

+0

쓰기 단위 테스트. –

+0

모스 부호는 연결된 형태로 디코딩 할 수 없습니다. 각 글자의 갭이 어디인지 알아야합니다. E와 T를 S와 O와 비교하여 무슨 뜻인지 확인하십시오. – Phil

답변

0

모스 프레이즈를 한 번에 한 문자 씩 스캔하는 대신 StringTokenizer 또는 스캐너를 사용하여 공백으로 분할하십시오.

for (Scanner s = new Scanner(Mphrase); s.hasNext();) { 
    String letter = s.next(); 
    for(int index = 0; index < Morse.length; index++) { 
     if(letter.equals(Morse[index])) { 
      System.out.println(Aplphabet[index]); 
      break; 
     } 
    } 
} 
+0

다른 출력물을 사용하고 있습니다. 내 괄호와 관련이 있다고 생각합니다. – AAA

0

나는 간단한 일이지도를 만드는 것입니다 생각 문장 및 각 단어에 대해 적절한 사전/HashMap을 확인하십시오.

0

난 당신이 디버거에서 java.util.StringTokenizer의

+0

이 답변을 확장하고 제안을 구현하는 방법을 보여주지 않는 한, 의견으로는 더 좋을 것이라고 생각합니다. –