2017-02-24 12 views
-2

したがって、プログラムのオブジェクトはタイトルにあります。私はモールスコードに英語を変換することに成功しましたが、逆の方法は困難であることが証明されています。私はフォーラム全体を見てきて、ここで私の問題を解決することができませんでした。それは変換することができるようだ、それはモールス符号の最後の文字を変換するだけです。私はまた、スペースを使ってお互いの単語を区別する方法を考え出すこともできません。どんな助けでも大歓迎です。モールスから英語へ

/****** 
* This program will prompt the user to specify the desired type of translation, 
* input a string of Morse code characters or English characters, 
* then display the translated results 
* 
* Pre-Conditions: 
* 
* Post-Conditions: 
* 
* @author: PC 
******/ 

import java.util.Scanner; 
import java.util.Arrays; 

public class MorseCode 
{ 
    public static void main(String [] args) 
    { 
     Scanner input = new Scanner(System.in); 

     String userInput; 

     System.out.println("This is a Translator."); 

     System.out.println("Would you like to translate sentence to Morse code or English? (MC or E):"); 
     String choice = input.nextLine(); 
     choice = choice.toLowerCase(); 

     if(choice.equals("e")){ 
      System.out.println("Enter sentence (puncuation not needed):"); 
      userInput = input.nextLine(); 
      userInput = userInput.toLowerCase(); 

      String [] morseWords = userInput.split(" ");   

      convertToEnglish(morseWords); 
     } 

     else if(choice.equals("mc")){ 
      System.out.println("Enter sentence (puncuation not needed):"); 
      userInput = input.nextLine(); 

      convertToMorse(userInput); 
     } 
    } 

    public static void convertToMorse(String text) 
    { 
     int i, j; 
     String [] morseAns = new String[text.length()]; 

     text = text.toLowerCase(); 

     String alphabet = ("abcdefghijklmnopqrstuvwxyz1234567890 "); 

     String [] morse = new String[] { ".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--", 
     "-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--..", 
     ".----","..---","...--","....-",".....","-....","--...","---..","----.","-----", "|" }; 

     char selectedChar, convertedChar, alphabetChar; 

     for(i = 0; i < text.length(); i++) 
     { 
     selectedChar = text.charAt(i); 

     for(j = 0; j < alphabet.length(); j++) 
     { 
      alphabetChar = alphabet.charAt(j); 

      if(selectedChar == alphabetChar) 
      { 
      morseAns[i] = morse[j]; 
      } 
     } 
     } 

    for(i = 0; i < text.length(); i++) 
    { 
     System.out.print(morseAns[i] + " "); 
    } 

    } 

    public static void convertToEnglish(String [] multiMorseWords) 
    { 
     int i, j; 
     String multipleMorseWords; 

     String alphabet = ("abcdefghijklmnopqrstuvwxyz1234567890 "); 

     String [] morse = new String[] { ".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--", 
     "-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--..", 
     ".----","..---","...--","....-",".....","-....","--...","---..","----.","-----", "|" };  

     char [] englishAns = new char[multiMorseWords.length]; 

     for(i = 0; i < multiMorseWords.length; i++) 
     { 
     multipleMorseWords = multiMorseWords[i]; 

     String [] morseChars = multipleMorseWords.split(" "); 

     for(j = 0; j < morseChars.length; j++) 
     { 
      if(morseChars[j].equals(morse[j])) 
      { 
      englishAns[i] = alphabet.charAt(j); 
      } 
     } 
     } 

     for(i = 0; i < multiMorseWords.length; i++) 
     { 
     System.out.println(englishAns[i]); 
     } 
    } 


} 
+0

[Javaの持つ英語のテキストにモールス符号変換]の可能複製(http://stackoverflow.com/questions/29572916/converting-morse-code-to-english-text-:ここに私の改定方法であり、 with-java) –

+1

現在の出力が目的の出力と一致せず、その理由がわからない場合は、デバッグを開始します。これについてどうやって行くのかわからない場合は、[小さなプログラムをデバッグする方法]を見てください。(http://ericlippert.com/2014/03/05/how-to-debug-small-プログラム/)。あなたの直接の問題を解決することはできませんが、あなた自身が解決するのに役立つ手順を教えてくれます。それでも問題が解決できない場合でも、質問をすることができます。より集中的で簡単に答えることができます。 –

答えて

1

は、あなただけのマップを作成し、モールス文字列と文字として値としてすべてのキーを追加し、言葉を反復し、マップから取得することができます。それぞれのモールスコードは何かで区切られていなければならず、そして単語は違うはずですなど、扱うべきことがいくつかあります。あなたの現在のように、単語に3つのスペースがあれば、それ以外の場合はモース値の間隔を区切る必要があります。区別する方法はありません。ここ

は一例です:

public static void convertToEnglish(String[] multiMorseWords) { 


     Map<String, String> morse = new HashMap<String, String>(); 
     morse.put(".-", "a"); 
     morse.put("-...", "b"); 
     // etc.. add all the morse code inputs 

    for (String word : multiMorseWords) { 
     System.out.println(morse.get(word));  
    } 
} 
0

は私のコードを修正しました! convertToEnglishメソッドで分割するだけで、mainメソッドでsplit()を呼び出す必要はありませんでした。

public static void convertToEnglish(String morseSentence) 
{ 
    int i, j; 

    String alphabet = ("abcdefghijklmnopqrstuvwxyz1234567890 "); 

    String [] morse = new String[] { ".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--", 
    "-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--..", 
    ".----","..---","...--","....-",".....","-....","--...","---..","----.","-----", "|" };  

    String [] morseChars = morseSentence.split(" "); 
    String selectedMorse; 
    char [] englishAns = new char[morseChars.length]; 

    for(i = 0; i < morseChars.length; i++) 
    { 
    selectedMorse = morseChars[i]; 

    for(j = 0; j < morse.length; j++) 
    { 
     if(selectedMorse.equals(morse[j])) 
     { 
     englishAns[i] = alphabet.charAt(j); 
     } 
    } 
    } 

    for(i = 0; i < englishAns.length; i++) 
    { 
    System.out.print(englishAns[i]); 
    } 
} 
関連する問題