2014-06-11 4 views
1

모스에서 영어로 번역하는 것은 매력처럼 작동하지만, 영어에서 모스로 구문이나 문장 (여러 단어는 공백으로 구분)을 번역하는 것은 모스에게 번역 된 첫 단어 만 산출합니다. 예를 들어 'Hello World'를 입력하면 번역사는영어 - 모스 번역기

'...을 반환 할 것입니다. .- ..-- --- --- '.

번역사의 전체 문장을 얻으려면 무엇을 변경해야합니까? 나는 문제가 무엇인지 생각하고 번역가가 구두점을 무시한다는 점을 지적했다.

if(answer.equals("E")) 
{ 
    Scanner scan2 = new Scanner(System.in); 
    System.out.print("Enter a word or phrase in English: "); 
    String englishInput = scan.next(); 
    System.out.println(toMorse(englishInput)); 
    scan2.close(); 
} 

단지 인 첫 번째 토큰을 읽이 섹션에서 String englishInput = scan.next(); 라인이 있음을 http://www.tutorialspoint.com/java/util/scanner_next.htm (java.util.Scanner.next의 정의)에 따라 내가 믿는 TIA

import java.util.Scanner; 

public class JavaProgram 
{ 
    //made them static so they can be accessed from static functions 
    private final static char[] ABC = {'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', ' '}; 

    private final static String[] MORSE = {".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", 
     ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", 
     "...-" ,".--" ,"-..-", "-.--", "--..", "|"}; 

    public static void main(String [] args) 
    {  
     Scanner scan = new Scanner(System.in); 
     System.out.print("If you want to convert from Morse to English, type 'M', if you would like to convert from English to Morse, type 'E': "); 
     String answer = scan.nextLine(); 
     if(answer.equals("E")) 
     { 
      Scanner scan2 = new Scanner(System.in); 
      System.out.print("Enter a word or phrase in English: "); 
      String englishInput = scan.next(); 
      System.out.println(toMorse(englishInput)); 
      scan2.close(); 
     } 
     if (answer.equals("M")) 
     {   
      Scanner scan3 = new Scanner(System.in); 
      System.out.print("Enter a word or phrase in Morse: "); 
      String morseInput = scan.nextLine(); 
      System.out.println(getABC(morseInput)); 
      scan3.close(); 
       } 
     scan.close(); 
     } 


    private static String toMorse(String ABCString) 
    { 
     String morseString = ""; 
     for (char c : ABCString.toLowerCase().toCharArray()) 
     { 
      morseString += charToMorse(c) + " "; 
     } 
     return morseString; 
    } 

    //**I am fairly certain the problem is in this method.** 
    private static String charToMorse(char c) 
    { 
     for(int i = 0; i < ABC.length; ++i) 
     { 
      if (c == ABC[i]) 
      { 
       return MORSE[i]; 
      } 
     } 
     return String.valueOf(c); 
    } 


    private static String getABC(String morseString) 
    { 
     String ABCString = ""; 
     for (String s : morseString.split("\\s")) 
     { 
      ABCString += characterToABC(s); 
     } 
     return ABCString; 
    } 


    private static String characterToABC(String s) 
    { 
     for (int i = 0; i < MORSE.length; ++i) 
     { 
      if (s.equals(MORSE[i])) 
      { 
       return String.valueOf(ABC[i]); 
      } 
     } 
     return s; 
    } 
} 
+0

'스캐너 # next()'의 기능은 무엇입니까? '스캐너 # nextLine()'은 무엇을합니까? –

답변

4

, 첫 번째 단어는 공백이므로 한 문장 전체를 올바르게 받아들이는 nextLine()과 반대입니다.