所以我试图将一个字符串(有罪)改成同一个字符串的混乱版本。唯一不随机的是任何双字母必须放在一起。因此,如果我有字符串“药房”,那就必须是“mraacpyh”。我以为我想出来了,但现在我得到一个StringIndexOutOfBoundsException。任何人都可以对我做错了吗?
String guilty = "";
String scramble = "";
if (killer == 0)
guilty = "pharmacy";
if (killer == 1)
guilty = "closet";
if (killer == 2)
guilty = "newspaper";
if (killer == 3)
guilty = "dollar";
if (killer == 4)
guilty = "college";
while (!guilty.equals("")){
int i = r.nextInt(guilty.length());
for (int j = 0; j < guilty.length()-guilty.replace(guilty.substring(i, i+1), "").length(); i++){
scramble = scramble + guilty.substring(i, i+1);
}
guilty = guilty.replace(guilty.substring(i, i+1), "");
System.out.println(scramble);
System.out.println(guilty);
}
答案 0 :(得分:0)
int i = r.nextInt(guilty.length());
如果有罪'APPLE'我就是5.最后一个字母'E'的索引是4! (第一个char的索引是0) 问题出在这里:
guilty.replace(guilty.substring(i, i+1), "")
如果增加变量i,它将高于字符串的最大索引。我是你的字符串的最大索引。
否则,改组字符串:
import org.apache.commons.lang3.ArrayUtils; //ver.3.6
...
String s = "apple";
char[] chars = s.toCharArray();
ArrayUtils.shuffle(chars);
System.out.print(String.valueOf(chars));