我想为一项任务洗牌一根绳子。当我尝试这样做时,它会抛出一个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是在另一种方法中由随机生成的字符组成的字符串,不允许重复。
问题是:解决这个问题的好方法是什么?
发布于 2015-01-18 13:20:36
例如,您确定sb是使用StringBuilder sb = new StringBuilder();初始化的吗?检查堆栈跟踪中的错误,它可能会显示sb为null。
在示例2中,行masterCode = masterCode.concat(Character.toString(c));附加您的字符。您需要首先设置masterCode = ""。根据医生们,此方法:
将指定的字符串连接到此字符串的末尾。
https://stackoverflow.com/questions/28010041
复制相似问题