1

我的代码有问题。我被要求使用包含摩尔斯电码和类似值的 txt 创建一个并行数组。例如:A .- B -... 等等...

这是我的错误所在 -

public class Translate
{
String input;
String code[];
String alphabet[];

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

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

public void setAlph(String[] alphabet)
{
    this.alphabet = alphabet;
}

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

public String getInput()
{
    return input;
}

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

线程“主”java.lang.ArrayIndexOutOfBoundsException 中的异常:36

我通常不寻求帮助,但我已经为此工作了几个小时。我能看到将 input.charAt 与字母(字符串)进行比较的唯一方法是将字符串解析为 char 或在末尾添加 .charAt。我试过做 alphabet[index].charAt(index)) 但这也不起作用。它给了我同样的错误,只有 1 而不是 36

UPD 我在 Translate.getTranslate(Translate.java:39) 处收到错误“线程“主”java.lang.NullPointerException 中的异常”

UPD 不再接收错误。然而,我对我的下一个任务感到困惑。我需要在多个代码字母之间添加一个空格,在单词之间添加 3 个空格。例如:如果“嘿”是用户输入,则输出应该是“.... -.--”,而我收到“....-.--”

提前致谢。

4

2 回答 2

0

看起来你的问题是for(int index = 0; index <= alphabet.length; index++)- 你不断增加index直到它等于字母表的长度,这将使它超出你得到的异常的结尾。你应该index < alphabet.length避免这种情况。

于 2013-04-12T01:27:42.380 回答
0

您没有显示所有变量声明和示例输入,因此以下内容基于我对它们的猜测。

  1. 看起来奇怪的是“<=”,应该是“<”

    for(int index = 0; index <= alphabet.length; index++)

  2. 您不应该每次都遍历字母表,而是事先准备好映射。那会更有效率。

于 2013-04-12T01:27:45.407 回答