2015-06-05 4 views
0

Код сокращает добавление пробела в первом положении матрицы (0) и начинает слово во второй позиции (1). Поэтому последняя буква слова прерывается, потому что длина массива определяется самой длиной слова.индексы не читаются должным образом

Входное слово "hummus", но выход " hummu" (обратите внимание на ведущее пространство).

Мой код (некоторые переменные объявляются выше в другом разделе кода):

//Reads in the wordlist 
for (int x = 0; x < wordList.length; x++) { 
    word = wordList[x]; 
} 

//Splits the word chosen from word list into an array 
JTextField[] wordAmount = new JTextField[word.length()];//Creates a JtextField for each letter 
String[] letters = word.split(""); 
String temp; 
int wordLength = word.length(); 

//Determines amount of textfields are needed for the word 
for (int j = 0; j < wordLength; j ++) { 
    temp = letters[j]; 
    wordAmount[j] = new JTextField(); 
    wordAmount[j].setText(temp); 
    System.out.println(wordAmount[j].getText()); 
}## Heading ## 

ответ

1

Это должно быть довольно легко пошагово с помощью отладчика. У меня нет Java установлен на компьютере, я нахожусь в данный момент, но я уверен, что ваша проблема с этой линией:

String[] letters = word.split(""); 

Я думаю, что это собирается забрать постороннее пространство на оба заканчивается.

Это очень странный способ разделить String на его буквы; почему бы просто не использовать toCharArray и конвертировать каждый char в String?


В качестве примечания, что именно вы ожидаете

for (int x = 0; x < wordList.length; x++) { 
    word = wordList[x]; 
} 

делать?

1

Никогда не пропускайте пустую строку для разделения. Как и @MattPutnam, используйте toCharArray, чтобы получить отдельные символы массива. Вы можете повернуть char обратно в String, используя статический метод Character.toString, когда вам нужно.

.split струны с "" как регулярное выражение соответствует любому ..., который пинает в этом правиле:

При наличии положительной ширины матча в начале последовательности ввода, то пустой ведущий подстроки включается в начале результирующего массива.

Поскольку «" соответствует первой букве вашей строки, letters[0] устанавливается в пустую строку.

+0

Кроме того, я, вероятно, должен вернуться и отметить, что, «сопоставляя все», я на самом деле подразумеваю разделитель символов между элементами. – Powerlord