2013-04-12 74 views
1

我的代碼有問題。我被要求創建一個使用包含莫爾斯碼和類似值的txt的並行數組。實例:.- 乙-... 等等java陣列輸出間距

繼承人在那裏我的錯誤是 -

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。我試過做字母表[索引] .charAt(索引)),但也沒有工作。它給了我同樣的錯誤只與1不是36

UPD即時得到「在Translate.getTranslate(Translate.java:39)顯示java.lang.NullPointerException‘主要錯誤’在線程異常」

UPD無更長的接收錯誤。然而,我對我的下一個任務感到困惑。我需要在更多的代碼字母和單詞之間的3個空格之間添加一個空格。 例如:如果「嗨」是用戶輸入,輸出應該是「........」,相比之下我收到「.....- .--」

在此先感謝。

+0

'index <= alphabet.length'應該是'index torquestomp

回答

0

它看起來像你的問題是for(int index = 0; index <= alphabet.length; index++) - 你繼續遞增index,直到它等於字母表的長度,這將使它超過最終的結果,讓你得到異常。你應該使它成爲​​以避免這種情況。

0

您沒有顯示所有變量聲明和示例輸入,因此以下是基於我對它們的猜測。

  1. 什麼看起來很奇怪是 「< =」,應該是 「<」

    爲(INT指數= 0;指數< = alphabet.length;指數++)

  2. 你不應該重複每次都在字母表上,但是事先準備映射。那樣會更有效率。

+0

我用更多信息更新了它。我改變了「<=」爲「<」,現在我得到了錯誤「線程中的異常」主「java.lang.NullPointerException \t at Translate.getTranslate(Translate.java:39)」@Animatinator – Sigmamerc

+0

Now alphabet [index ]是空的,對吧?該錯誤應該直接用於某些IDE的調試。如果您需要進一步的幫助,我們需要知道「輸入」值,Arrays.toString(字母)和Arrays.toString(代碼)。 – Vitaly