我的代码出了问题。我被要求使用包含莫尔斯代码和类似值的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个空格之间添加一个空格。 例如:如果“嘿”是用户输入,则输出应该是“.... -.--”,而不是我收到的“...... - .--”
提前致谢。
答案 0 :(得分:0)
看起来您的问题是for(int index = 0; index <= alphabet.length; index++)
- 您继续递增index
,直到它等于字母表的长度,这将使得它超出结束时给出您正在获得的异常。你应该让它index < alphabet.length
来避免这种情况。
答案 1 :(得分:0)
您没有显示所有变量声明和示例输入,因此以下内容基于我对它们的猜测。
看起来很奇怪的是“&lt; =”,应该是“&lt;”
for(int index = 0; index&lt; = alphabet.length; index ++)
您不应每次迭代字母表,而是事先准备好映射。那会更有效率。