在字符串中打乱字符的问题
Problems with shuffling characters in a string
我想为一个作业打乱某个字符串。当我尝试这样做时,它会抛出 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
是随机生成的字符串,不允许重复,另一种方法。
问题:解决此问题的好方法是什么?
在示例一中,您确定 sb
是使用 StringBuilder sb = new StringBuilder();
初始化的吗?检查堆栈跟踪是否有错误,它可能显示 sb
为空。
在示例二中,masterCode = masterCode.concat(Character.toString(c));
行附加了您的字符。您需要先设置 masterCode = ""
。根据 the docs,此方法:
Concatenates the specified string to the end of this string.
我想为一个作业打乱某个字符串。当我尝试这样做时,它会抛出 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
是随机生成的字符串,不允许重复,另一种方法。
问题:解决此问题的好方法是什么?
在示例一中,您确定 sb
是使用 StringBuilder sb = new StringBuilder();
初始化的吗?检查堆栈跟踪是否有错误,它可能显示 sb
为空。
在示例二中,masterCode = masterCode.concat(Character.toString(c));
行附加了您的字符。您需要先设置 masterCode = ""
。根据 the docs,此方法:
Concatenates the specified string to the end of this string.