选择一个随机字母并更改它 (JAVA)

Choose a random letter and change it (JAVA)

大家好,我是 Java 的新手,我的代码需要帮助

/**
 * @(#)Changing.java
 *
 *
 * @author 
 * @version 1.00 2015/2/27
 */

import java.util.Random;

public class Changing {

    public static void main(String[] args) {
        Random generator = new Random();
        int num1;   
        String phrase = "This is a pencil";

        int len = phrase.length();
        num1 = generator.nextInt(len);
        char c = phrase.charAt(num1, 'x');
        String mut1 = phrase.replace(c, 'x');
        System.out.println(mut1);
    }
}

我需要编写程序来随机选择一个字母并将其更改为 X

谢谢

char c = phrase.charAt(num1, 'x'); 更改为 char c = phrase.charAt(num1);

没有接受两个参数的 charAt 方法。

Nfear 从

中删除 'x' 是正确的
char c = phrase.charAt(num1, 'x');

您可能还需要考虑一个 if 语句,以确保您不会以 "Thisxisxaxpencil" 作为答案。当然,除非你对那个输出没意见。请参阅下面的代码....

import java.util.Random;
public class Changing {

public static void main(String[] args) {
    Random generator = new Random();
    int num1;   
    String phrase = "This is a pencil";

    int len = phrase.length();
    char c = ' ';
    while(c == ' '){
        num1 = generator.nextInt(len);
        c = phrase.charAt(num1);
    }
    String mut1 = phrase.replace(c, 'x');
    System.out.println(mut1);

}

编辑 您可能还想考虑创建一个 char 数组而不是使用 .replace()

这将使您不必替换字符串中的每个 's' 或每个 'i'。 请参阅下面的代码...

    public static void main(String[] args) {
    Random generator = new Random();
    int num1 = 0;   
    String phrase = "This is a pencil";

    int len = phrase.length();
    char c = ' ';
    while(c == ' '){//to ensure we don't x out a space
        num1 = generator.nextInt(len);
        c = phrase.charAt(num1);
    }
    char[] phraseArray = phrase.toCharArray();//make string into a char[]
    phraseArray[num1] = 'x';//replace char the random char index with 'x' This replaces the random letter for you.
    String mut1 = new String(phraseArray);//change your char[]  back into a string
    System.out.println(mut1);//print results
}

环顾四周并处理了几个问题后,我发现 StringBuilder() 完全符合您的要求。

    Random generator = new Random();
    int num1 = 0;
    StringBuilder phrase = new StringBuilder("This is a pencil");
    int len = phrase.length();
    char c = ' ';
    while (c == ' ') {
        num1 = generator.nextInt(len);
        c = phrase.charAt(num1);
    }
    phrase.setCharAt(num1, 'X');   // <-- i think this is a nice way to do it.
    //String sub1 = phrase.substring(0, num1) + 'X' + phrase.substring(num1+1); // Not so elegant as StringBuilder().
    System.out.println(phrase);