你假设这两个随机数 a 和 b 有财产 a < b 。如果 a >= b ?然后 word.substring(a+1, b) 会抛出一个 错误 。
a
b
a < b
a >= b
word.substring(a+1, b)
要修复它,请确保 a < b 保持(再生,交换等)。
但可以肯定的是,您的代码中不仅仅是这个错误。例如,使用 next() ,比较 String 同 char ,使用错误的换行符,不剥离换行符,等等。您可能希望在代码中添加一些打印语句,您可以看到实际发生的情况。
next()
String
char
好吧,至于交换功能,这样的东西应该工作:
private static String swapLetters(String word) { char[] temp = word.toCharArray(); char swapHelper; Random r = new Random(); int a = r.nextInt(word.length()-2)+1; int b = r.nextInt(word.length()-2)+1; swapHelper = temp[a]; temp[a] = temp[b]; temp[b] = swapHelper; word = String.copyValueOf(temp); return word; }
基本上,我将字符串转换为字符数组,以便我可以轻松地对它们进行操作。 A和B是包含应交换的字母索引的变量。之后,数组将转换回字符串并返回。