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

标签 java arrays string exception arraylist

我想要做的是将 String 中的子字符串添加到 ArrayList 中。基本上将字符串中的每个字母添加到 ArrayList 中的索引中。之后,我有一个 print 语句,只是为了查看字母是否已添加到 ArrayList 中(这是 makearraylisOfChosenWord 下的第二个 for 循环)。但是,当我在有或没有打印语句的情况下运行它时,它都会给我一个 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());
}

最佳答案

我只是在考虑你的问题,并会尝试使用 ArrayListCharacter而不是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);
}

关于java - NullPointerException 将子字符串从字符串添加到数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20502734/

相关文章:

java - 需要像 C 中的结构一样在 Java 中创建类

java - Java中的构造函数可以是私有(private)的吗?

java - 将键转换为数组时不理解 hashmap 中的 return 语句

Java 程序测试删除最多一个元素后严格递增的数组

javascript - 理解 JSON 数组

c - 如何使用字符串矩阵编写C语言程序?

java - 旧程序中的四元数旋转

java - 使用 SortedSetDocValuesField 对多个字段进行排序 - 错误 : unexpected docvalues type SORTED_SET for field

java - 尝试使用正则表达式匹配大字符串时出现 StackOverflow 错误

c# - 来自 Request.Url.ToString() 的字符串在操作/比较第一个字符时神秘地更改为另一个字符串