2017-12-08 18 views
0

何らかの翻訳者を作成する必要があります。私はキーと値としてそれぞれロシア語と英語の単語のペアを持つHas​​hMapを持っています。私がロシア語でフレーズを入力すると、私は英語の翻訳やヌルを取得する必要があります/辞書にない単語には見つかりません。辞書としてのHashMapを使った翻訳者

だから私は翻訳のために、このような方法を持っている:ここでは

public boolean isInDictionary(String word){ 
     if(dictionary.containsKey(word)){ 
      return true; 
     } 
     return false; 
    } 

    public String translateSentence(String sentence){ 
     StringBuilder result = new StringBuilder(); 
     String[] splittedStrings = sentence.split("\n"); 

     List<String> list = new ArrayList<>(); 
     for(String s : splittedStrings){ 
      result.append(translateCheck(s)); 
     } 
     return result.toString(); 
    } 

    public String getWord(String word){ 
     return dictionary.get(word); 
    } 

は、私はこれらのメソッドを呼び出す方法です:

Scanner scanner = new Scanner(System.in); 
    Translator translator = new Translator(); 
    System.out.println("Input the phrase to translate:"); 
    String input = scanner.nextLine(); 
    System.out.println(translator.translateSentence(input)); 

しばらくときロシア語I入力明確な言葉は、私は、そのための翻訳を取得すると私は、異なる単語からなるフレーズを入力します。これはnullになります。 どうしたのですか?私はいくつかの助けに感謝します!このような

+2

あなたは文章を単語ではなく行で分割しています。おそらく 'sentence.split(" ")'が必要でしょうか? –

+0

@LorisSecuroありがとう、それは私を助けた。それは答えとしてマークする必要があります! – Cassie

答えて

1

あなたがラインの代わりに、言葉で文を分割している、おそらくあなたはsentence.split(" ")代わりのsentence.split("\n")を使用していました。

1

何か:

public boolean isInDictionary(String word) { 
     return dictionary.containsKey(word); //note the removal of the if as it already returns a boolean 
    } 

    public String translateSentence(String sentence) { 
     StringBuilder result = new StringBuilder(); 
     String[] splittedStrings = sentence.trim().split(" "); // the actual change 

     List<String> list = new ArrayList<>(); 
     for (String s : splittedStrings) { 
      result.append(translateCheck(s)); 
     } 
     return result.toString(); 
    } 

    public String getWord(String word) { 
     return dictionary.get(word); 
    } 
関連する問題