NullPointerException将字符串从字符串添加到数组列表

时间:2013-12-10 18:44:11

标签: java arrays string exception arraylist

我要做的是将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());
}

2 个答案:

答案 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。