我正在编写的程序的某些代码遇到麻烦。该程序的目的是从一个单独的文本文件中提取一个单词,对其进行10次加扰,然后显示该单词的加扰字母。我遇到的问题是我不确定如何将字母加扰十次。我知道实际的加扰发生在我的混频器方法中,但是如何使我难以理解。我曾考虑过使用for循环,但不确定如何去做。

import java.io.*;
import java.util.*;

public class Scrambler {

public static void main(String[] args) throws FileNotFoundException {
    Scanner input = new Scanner(new File("words.txt"));
    String text = input.next();
    System.out.println("Original Word: " + text);
    System.out.println();
    System.out.println("Scrambled Word:");
    System.out.println("********");
    separate(text);
    System.out.println("********");

}

public static void separate(String text) {
    System.out
            .println("  " + text.charAt(0) + "  " + text.charAt(1) + "  ");
    System.out.println(text.charAt(2) + "      " + text.charAt(3));
    System.out
            .println("  " + text.charAt(4) + "  " + text.charAt(5) + "  ");
}

public static String mixer(String text) {
    Random r = new Random();
    int r1 = r.nextInt(text.length());
    int r2 = r.nextInt(text.length());

    String a = text.substring(0, r1);
    char b = text.charAt(r1);
    String c = text.substring(r1 + 1, r2);
    char d = text.charAt(r2);
    String e = text.substring(r2 + 1, text.length());

    text = a + b + c + d + e;

    return text;
}

}

最佳答案

您的mixer()无法正常工作。我首先将字符串变成char [],然后检索2个随机索引并切换这些索引中的字符。

char[] stringasarray = text.toCharArray();
int length = text.length;

for(int i=0; i<length; i++){
    int letter1 = rnd.nextInt(length);
    int letter2 = rnd.nextInt(length);

    char temp = stringasarray[letter1];
    stringasarray[letter1] = stringasarray[letter2];
    stringasarray[letter2] = temp;
}
String newtext = new String(stringasarray);

10-01 02:59