【发布时间】:2013-12-28 10:59:11
【问题描述】:
我想要做的是将String 的子字符串添加到ArrayList。基本上将字符串中的每个字母添加到ArrayList 的索引中。之后我有一个打印语句,只是为了查看这些字母是否被添加到ArrayList(这是makearraylisOfChosenWord 下的第二个for 循环)。但是,当我在有或没有 print 语句的情况下运行它时,它给了我一个NullPointerException。是因为我在第一个 for 循环中以错误的方式将字母添加到数组列表中吗?
谢谢您的帮助
代码如下:
String[] wordList = {"apple", "orange", "strawberry", "banana"};
String chosenWord;
//Make an array list to hold one letter of the chosen word at each index
void makeArrayListOfChosenWord(){
ArrayList<String> lettersOfChosenWord = new ArrayList<String> ();
for (int i = 0; i < chosenWord.length(); i++) {
lettersOfChosenWord.add(chosenWord.substring(i, i+1));
}
for (int i = 0; i < lettersOfChosenWord.size(); i++) {
System.out.println((lettersOfChosenWord.get(i)).toString());
}
}
//Let the game pick a random word from the word list
void setRandomWord(){
int wordListLength = wordList.length;
int pickRandomWord = (int) (Math.random() * wordListLength);
String createRandomWord = wordList[pickRandomWord];
chosenWord = createRandomWord;
System.out.printf("the word is %s letters long", chosenWord.length());
}
【问题讨论】:
-
这两种方法是完全独立的——它们有什么关系?如果您能提供一个简短但完整的程序来演示该问题,那将非常有帮助。
-
实际上 setrandomword 从单词列表中选择一个随机单词,如果你看的话,实例变量 selectedword 被赋予选择的随机单词,(它在 setrandomword 方法,第 4 行)和 makearraylist 方法使用 selectedword 变量
-
啊,和你一起。第二个方法肯定在第一个方法之前调用吗?这是一个简短但完整的程序会清楚地说明的事情。如果您显示堆栈跟踪信息也会有所帮助,以便我们知道异常发生的位置。
-
没有问题,需要调用setRandomWord,然后makeArrayListOfChosenWord,应该不会抛出异常
-
好的,正在处理中,感谢您的提示
标签: java arrays string exception arraylist