java数组输出中的间距

时间:2013-04-12 00:58:07

标签: java arrays runtime-error

我的代码出了问题。我被要求使用包含莫尔斯代码和类似值的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;
}
}

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

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

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

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

提前致谢。

2 个答案:

答案 0 :(得分:0)

看起来您的问题是for(int index = 0; index <= alphabet.length; index++) - 您继续递增index,直到它等于字母表的长度,这将使得它超出结束时给出您正在获得的异常。你应该让它index < alphabet.length来避免这种情况。

答案 1 :(得分:0)

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

  1. 看起来很奇怪的是“&lt; =”,应该是“&lt;”

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

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