2013-12-10 39 views
1

我想要做的是将String的子字符串添加到ArrayList。基本上将字符串中的每个字母添加到ArrayList中的索引中。之后,我有一个打印声明只是为了看看这些字母是否被添加到ArrayList(这是makearraylisOfChosenWord下的第二个循环)。但是,当我使用或不使用打印语句运行时,它会给我一个NullPointerException。是否因为我在第一个for循环中以错误的方式将字母添加到了ArrayList中? 感谢您的帮助 继承人的代码:NullPointerException从字符串添加子串到数组列表

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

这两种方法完全分开 - 它们是如何相关的?如果你能提供一个简短的但完整的程序来证明问题,那真的很有帮助。 –

+1

实际上,setrandomword从单词列表中选择一个随机单词,如果你看,实例变量选择单词被赋予随机单词pick(它在setrandomword方法中,第4行),并且makearraylist方法使用选择的单词变量 –

+0

啊,和你。第二种方法*绝对*在第一种方法之前调用?这是一个简短但完整的程序会清楚表明的事情。如果您要显示堆栈跟踪信息,以便知道发生异常的位置,也会有所帮助。 –

回答

-1

如果你打电话给setRandomWord方法调用makeArrayListOfChosenWord方法没有NullPointerException异常将被抛出前。在这种情况下,您的代码中不需要if-check。

0

我只是在想你的问题,并会尝试使用CharacterArrayList而不是String。这是因为你提到你正在将String分成单个Character s,所以ArrayList<Character>()似乎是一个合理的方法。

对于分裂的String我会利用该方法toCharArray()的:

String str = "abcd..."; 
ArrayList<Character> chars = new ArrayList<Character>(); 
for (char c : str.toCharArray()) { 
    chars.add(c); 
} 
+0

听起来很有趣,我从来没有见过之前的方法,谢谢你提到它,我会尽力实现(当然,我理解它后,lol) –

+0

但是,toCharArray()使它成为一个常规数组或列表?因为我希望能够在程序启动时从数组列表中删除某些字母 –

+0

toCharArray返回数组。 for循环将每个数组元素添加到您的ArrayList中。使用这种方法可以避免substring方法和可能的ArrayOutOfBoundExceptions –