下面的代码需要接收一个字符串并随机交换两个字符的位置,这样操作将会进行stringLength()次。
但是有时候输出结果会比预期多出两个数字或少出两个数字。我尝试过各种方法,包括修改随机数生成方式和管理子字符串,但仍然无法解决这些异常情况。
这个问题来自于Java for Everyone,但它并不是作业。
谢谢您的想法。
但是有时候输出结果会比预期多出两个数字或少出两个数字。我尝试过各种方法,包括修改随机数生成方式和管理子字符串,但仍然无法解决这些异常情况。
Scanner in = new Scanner(System.in);
String word = in.next();
for (int wordLength = word.length(); wordLength >= 0; wordLength--){
int i = (int) (Math.random() * (wordLength - 1));
int j = 0;
// j has to be bigger than i.
while (j < i){
j = (int) ((Math.random() * wordLength));
}
String first = word.substring(0, i);
String middle = word.substring(i, j);
String last = word.substring(j);
word = first + word.charAt(j) + middle + word.charAt(i) + last;
System.out.println(word);
}
这个问题来自于Java for Everyone,但它并不是作业。
谢谢您的想法。