摩尔斯电码翻译帮助从文件中读取

时间:2012-11-01 21:16:42

标签: java

好的,所以我知道还有其他莫尔斯代码的答案,但我看了很多,但没有一个有效。对于我的任务,我是将一个文件Morse.txt读入并行数组。相反,我只做了两个文件,Morse.txt和Alphabet.txt一个用代码,另一个用数字和字母。我应该使用我制作的一个类来做翻译部分,当在main中调用时它应该翻译用户输入。我似乎无法让这个工作。我已经尝试过在类或getter中使用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();
    }
}

这是我的班级翻译(有些东西被注释掉了):

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 五 6 7 8 9 0 一个 乙 C d Ë F G H 一世 Ĵ ķ 大号 中号 ñ Ø P Q [R 小号 Ť ü V w ^ X ÿ ž

1 个答案:

答案 0 :(得分:1)

问题是你的返回无法达到“输出”,你需要在循环上面声​​明“输出”并将其初始化为output = null;

即便如此,它也只发送一个字符串。所以我这样做了;

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;
}

这基本上将所有代码组合在一起,为您提供所需的结果。