2014-09-07 5 views
0

Java Morsecode Translator에 문제가 있습니다. Characters와 MorseCode로 채워진 두 개의 배열을 만들었습니다. 내가 번역 할 경우 모스 부호는 방법 getCharacter()를 통해 모든 문자를 취득하는 메소드의 디코딩()Java Morsecode Translator

public String decode(String mc) { 
    StringBuilder sb2 = new StringBuilder(); 
    // trim() removes whitespaces before or after String 
    String mctrim = mc.trim(); 
    //Morsecode has a short Pause (1 Whitespace) between every character 
    //and a long Pause (3 Whitespaces) between words 
    //Splitting the Morsecode to get chars 
    if (mctrim.contains(kurzePause)) { 
     String[] mcsplit2 = mctrim.split(kurzePause); 
     for (int i = 0; i < mcsplit2.length; i++) { 
      sb2.append(getCharacter(mcsplit2[i])); 
     } 
    } 
    return sb2.toString(); 

텍스트합니다. 문자가 배열에 나열되지 않은 경우 '$'가 문장에 표시됩니다. 이제 kurzePause (짧은 일시 중지) 및 langePause (긴 일시 중지)를 변수로 선언했습니다. 공백은 내 배열의 일부가 아닙니다. 수 나는 올바른 모스 부호에 대해 주어진 출력 (.--- .- ...- .- -- .- -.-. .... - ... .--. .- ... ... .-.-.-) 세 가지 공백 (longPause)와 하나의 공백의 블록 사이의 차이를 만드는 문자열 (shortPause를)

예 분할 방법

: JAVA$$MACHT$$SPASS .

도움 주셔서 감사합니다.

+0

문장을 먼저 (긴 일시 중지)로 나눌 수 있으며 반복하는 동안 현재 문장을 단어 (짧은 일시 중지)로 나눌 수 있습니다. – Tom

+0

잘 이해한다면,'mc' 매개 변수는 모스 부호이고'.','-' 및 공백만을 포함하는 문자열입니까? 그리고'getCharacter'는'.'과'-'의 주어진 시퀀스에 해당하는 문자를 실제로 리턴합니다. –

답변

0

Java 정규식을 사용하면 발생 횟수를 지정할 수 있습니다. mctrim.split("\\s{3,}")는 문자열을 문장 (3 개 이상의 공백)로 분할해야하며, "\\s+"을 사용하여 문장을 더 분리 할 수 ​​있습니다.