1

他にもモールス符号の回答があることは知っていますが、多くの情報を調べましたが、どれも機能しませんでした。私の課題では、ファイル Morse.txt を並列配列に読み込む必要がありました。代わりに、Morse.txt と Alphabet.txt の 2 つのファイルを作成しました。1 つはコードで、もう 1 つは数字とアルファベットです。翻訳部分を行うために作成したクラスを使用することになっており、メインで呼び出されたときにユーザー入力を翻訳する必要があります。私はこれを機能させることができないようです。クラスまたはゲッターでtoStringを使用することから非常に多くのことを試しましたが、そこにある必要があると思われるループに入れても戻り値が見つかりません(それが理にかなっている場合)..とにかくここに私のコードがあります主要:

import java.util.*;
import java.util.Scanner;
import java.io.*;

public class redo
{
    public static void main(String[]args) throws IOException
    {
        String line2, file2 = "Morse.txt";
        String line, file = "Alphabet.txt";

        File openFile = new File(file);
        File openFile2 = new File(file2);

        Scanner inFile = new Scanner(openFile);
        Scanner inFile2 = new Scanner(openFile2);

        int index = 36;
        char[] charArray = new char[index]; 
        String[] code = new String[index];

        for(index = 0; index < 36; index++)
        {   
            while(inFile.hasNext())
            {
                    line = inFile.nextLine();
                    charArray = line.toCharArray();
                    //System.out.println(charArray[index]);
            }
        }       

        for(index = 0; index < 36; index++)
        {
            while(inFile2.hasNext())
            {
                code[index] = inFile2.nextLine();
                //System.out.println(code[index]);
            }
        }

        Scanner keyboard = new Scanner(System.in);

        String userInput;

        System.out.println("Enter something to translate: ");
        userInput= keyboard.nextLine();

        Translate inputTranslate = new Translate(userInput);

        inputTranslate.setInput(userInput);

        inputTranslate.setAlph(charArray);
        inputTranslate.setCode(code);

        inFile.close();
    }
}

そして、ここに私のクラスTranslateがあります(いくつかはコメントアウトされています):

public class Translate
{
    String input;
    String code[];
    char alph[];

    public Translate(String input)
    {
        this.input = input;
    }

    public void setInput(String input)
    {
        this.input = input;
    }

    public void setAlph(char[] alph)
    {
        this.alph = alph;
    }

    public void setCode(String[] code)
    {
        this.code = code;
    }

    public String getInput()
    {
        return input;
    }

//  public String getTranslate()
//  {
//      for(int i = 0; i < input.length(); i++)
//      {
//          for(int index = 0; index < alph.length; index++)
//          {
//              if(input.charAt(i) == alph[index])
//              {
//                  String output = code[index];
//              }
//          }
//      }
//      return output;
//  }


}

Morse.txt:

.---- ..--- ...-- ....- ..... -.... --... ---..

----.

.- -... -.-. -.. . ..-. --. .... .. .--- -.-

.-..

-。

.--. --.- .-.

...

..- ...- .-- -..- -.-- --..

Alphabet.txt: 1 2 3 4 5 6 7 8 9 0 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

4

1 に答える 1

1

問題は、リターンが「出力」に到達できないことです。ループの上で「出力」を宣言し、それを output = null; に初期化する必要があります。

それでも、1 つの文字列しか送信しません。だから私はこれをしました。

public String getTranslate()
{
    String output = null;
    String[] translated = new String[input.length()];
    for(int i = 0; i < input.length(); i++)
    {
        for(int index = 0; index < alph.length; index++)
        {
            if(input.charAt(i) == alph[index])
            {
                output = code[index];
                translated[i] = output;
            }
        }
    }
    for (int j = 1; j < translated.length; j++) {
        output = translated[0].concat(translated[j]);
    }
    return output;
}

これにより、基本的にすべてのコードがまとめられ、目的の結果が得られます。

于 2012-11-01T23:52:05.380 に答える