代码正在切割在第一个数组位置(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 ##
答案 0 :(得分:1)
这应该很容易通过调试器一步一步。我没有在我当前使用的计算机上安装Java,但我很确定你的问题在于这一行:
String[] letters = word.split("");
我认为这会在两端都占用一个无关的空间。
这是将String
分成字母的一种非常奇怪的方式;为什么不使用toCharArray
并将每个char
转换为String
?
作为旁注,你到底想要什么
for (int x = 0; x < wordList.length; x++) {
word = wordList[x];
}
要做什么?
答案 1 :(得分:1)
不要传递空字符串以进行拆分。就像@MattPutnam所说的那样,使用toCharArray
来获取数组的各个字符。您可以在需要时使用静态char
方法将String
变回Character.toString
。
字符串的.split与""
作为正则表达式匹配任何......在此规则中起作用:
当在输入序列的开头存在正宽度匹配时,在结果数组的开头包含空的前导子字符串。
由于“”匹配字符串的第一个字母,letters[0]
设置为空字符串。