Приведенный ниже код должен взять строку и переключить места из двух символов (произвольно сгенерированных) строкLength() раз.Случайная перестановка символов Java
Однако иногда я получаю две цифры больше или две цифры меньше на выходе. Я пробовал всевозможные вещи от изменения, как я получаю randoms для управления подстроками, и я все еще получаю эти аномалии.
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 для всех, но это НЕ ОБЯЗАТЕЛЬНО домашняя работа.
Спасибо за ваши идеи
Из вопроса, который вы написали, почему бы не упростить свой код, создав два случайных индекса и заменив символы в этих индексах на str.length() раз? – hrv