我想为某个作业重新排序某个字符串。当我尝试这样做时会抛出NullPointerException
。
for (char d : masterCode.toCharArray()) {
possibleLetters.add(d);
}
Collections.shuffle(possibleLetters);
for (char c : possibleLetters) { // arraylist of characters
sb.append(c); //stringbuilder
masterCode = sb.toString();
}
所以我尝试了另一种方式:
masterCode = masterCode.substring(0, 4);
for (char d : masterCode.toCharArray()) {
possibleLetters.add(d);
}
Collections.shuffle(possibleLetters);
for (char c : possibleLetters) { // arraylist of characters
//sb.append(c); //stringbuilder
masterCode = masterCode.concat(Character.toString(c)); // string
}
但这并没有给出预期的结果。 masterCode
首先是 ECAB ,然后是下一个输出,它是 CCBA 。
masterCode
是来自随机生成的字符的字符串,不允许重复,在另一种方法中。
问题:解决这个问题的好方法是什么?
答案 0 :(得分:1)
在示例一中,您确定使用sb
初始化了StringBuilder sb = new StringBuilder();
吗?检查堆栈跟踪是否有错误,它可能表明sb
为空。
在示例二中,行masterCode = masterCode.concat(Character.toString(c));
会附加您的字符。您需要先设置masterCode = ""
。根据{{3}},此方法:
将指定的字符串连接到此字符串的末尾。