[英]Spacing in java array output
我的代碼有問題。 我被要求使用包含莫爾斯電碼和類似值的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與Alphabet(string)進行比較的唯一方法是將字符串解析為char或在末尾添加.charAt。 我已經嘗試過執行Alphabet [index] .charAt(index)),但這也不起作用。 它只用1而不是36給了我相同的錯誤
UPD我收到錯誤“線程“主”中的異常,位於Translate.getTranslate(Translate.java:39)的java.lang.NullPointerException”
UPD不再收到錯誤。 但是,我對下一個任務感到困惑。 我需要在更多代碼字母之間添加一個空格,在單詞之間添加3個空格。 例如:如果用戶輸入“ Hey”,則輸出應為“ ..... -.--”,而Im則接收“ .....-.--”
提前致謝。
看來您的問題是for(int index = 0; index <= alphabet.length; index++)
-您一直在遞增index
直到它等於字母表的長度,這會使它超出最終值,從而給您得到。 您應該將其設置為index < alphabet.length
來避免這種情況。
您沒有顯示所有變量聲明和示例輸入,因此以下內容基於我對它們的猜測。
看起來很奇怪的是“ <=”,應該是“ <”
for(int索引= 0;索引<= Alphabet.length;索引++)
您不應該每次都遍歷字母,而應事先准備映射。 這樣會更有效率。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.