2013-04-12 3 views
1

У меня проблемы с моим кодом. Меня попросили создать параллельный массив с использованием txt, который содержал код Морзе и подобные значения. Пример: A .- B -... и т.д ...Интервал в выходе массива java

Heres, где моя ошибка

IS-
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 с алфавитом (строкой), - это разбор строки в символ или добавление .charAt в конце. Я пробовал делать алфавит [index] .charAt (index)), но это тоже не сработало. он дал мне ту же ошибку, только с 1 не 36

UPD Im получаю сообщение об ошибке «Исключение в потоке„основного“java.lang.NullPointerException на Translate.getTranslate (Translate.java:39)»

UPD Нет более длинные ошибки приема. Однако я смущен своей следующей задачей. Я должен добавить одно пробел между большим количеством букв кода и тремя пробелами между словами. Ex: Если пользовательский ввод «Hey», выход должен быть «..... -.--» по сравнению с тем, что Im получает «.....-.--»

Заранее спасибо.

+0

'index <= alphabet.length' должен быть' index torquestomp

ответ

0

Похоже, что ваша проблема for(int index = 0; index <= alphabet.length; index++) - вы продолжаете увеличивать index до тех пор, пока она не будет равна длине алфавита, что заставит его перерегулировать конец, давая исключение, которое вы получаете. Вы должны сделать это index < alphabet.length, чтобы этого избежать.

0

Вы не указали все объявления переменных и ввод образцов, поэтому следующее основано на моем предположении о них.

  1. Что выглядит странно "< =", должно быть "<"

    для (INT индекс = 0; индекс < = alphabet.length; индекс ++)

  2. Вы не должны повторять над алфавитом каждый раз, но заранее подготовьте карту. Это было бы более эффективно.

+0

Я обновил его с дополнительной информацией. Я изменил «<=» на «<», и теперь Im получает ошибку «Исключение в потоке» main «java.lang.NullPointerException \t at Translate.getTranslate (Translate.java:39)» @Animatinator – Sigmamerc

+0

Теперь алфавит [индекс ] null, не так ли? Ошибка должна быть простой для отладки с некоторой IDE. Если вам нужна дополнительная помощь, нам нужно знать значение «input», Arrays.toString (алфавит) и Arrays.toString (код). – Vitaly

Смежные вопросы