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

时间:2015-02-27 11:39:38

标签: java string random replace char

大家好,我是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);
    }
}

我需要让progrom选择一个随机字母并将其更改为X

谢谢

3 个答案:

答案 0 :(得分:1)

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
}

答案 1 :(得分:0)

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

没有charAt方法需要两个参数。

答案 2 :(得分:0)

在环顾四周并处理好几个问题之后,我发现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);