Java的for循环获取StringIndexOutOfBoundsException
问题描述:
所以我想改变一个字符串(有罪)变成一个相同的字符串的混乱版本。唯一不随意的是任何双字母必须放在一起。所以如果我有字符串“药房”,它将不得不像“mraacpyh”。我想我知道了,但现在我得到一个StringIndexOutOfBoundsException。任何人都可以照亮我在做什么错了吗?Java的for循环获取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);
}
答
int i = r.nextInt(guilty.length());
如果有罪是“苹果”我是5的最后一个字符“E”的指数是4! (第1字符的指数为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));
你应该改变你while循环的if语句。 'if(!guilty.equals(“”)){' –
你的代码很不完整。我们不知道一开始杀手是怎么做的。粘贴你的完整代码。 – progyammer
@progyammer可能会杀人,因为这部分代码正在试图找到罪恶派对。 – Kayaman