我要做的是将String
的子字符串添加到ArrayList
。基本上将字符串中的每个字母添加到ArrayList
中的索引。之后,我有一个打印声明,只是为了看看这些字母是否已添加到ArrayList
(这是makearraylisOfChosenWord
下的第二个for循环)。但是,当我使用或不使用print语句运行它时,它会给我一个NullPointerException
。是因为我在第一个for循环中以错误的方式将字母添加到arraylist中吗?
谢谢您的帮助
继承人代码:
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());
}
答案 0 :(得分:0)
我只是在考虑您的问题,并尝试使用ArrayList
Character
代替String
。这很好,因为你提到你要将String
分成单个Character
,所以ArrayList<Character>()
似乎是一种合理的方法。
为了分割String
,我会使用方法toCharArray()
:
String str = "abcd...";
ArrayList<Character> chars = new ArrayList<Character>();
for (char c : str.toCharArray()) {
chars.add(c);
}
答案 1 :(得分:-1)
如果在调用setRandomWord
方法之前调用makeArrayListOfChosenWord
方法,则不会抛出NullPointerException。对于这种情况,您的代码中不需要if-check。