指数读数不正确

时间:2015-06-05 17:04:56

标签: java arrays indices

代码正在切割在第一个数组位置(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 ##

2 个答案:

答案 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]设置为空字符串。