Java:使用随机字符创建长度为X的字符串

时间:2014-04-25 00:46:53

标签: java tostring

我必须做的问题如下

  

public static String randomDNAString(int dnaLength)   / ** * @param dnaLength一个非负int * @return一个随机String   长度dnaLength由四个字符A,T,G和C * /

组成

我以为我做得对(虽然效率极低)但它没有返回任何东西。这是我的代码。任何帮助表示赞赏。

    public static String randomDNAString(int dnaLength){
    Random rand = new Random();
    char[] dna;
    dna = new char[dnaLength];
    for(int i = 0; i<dnaLength;i++){
        int tempC = rand.nextInt(4);
        if(tempC == 0)
            dna[i] = 'A';
        if(tempC == 1)
            dna[i] = 'G';
        if(tempC == 2)
            dna[i] = 'C';
        if(tempC == 3)
            dna[i] = 'T';

    }
    return (java.util.Arrays.toString(dna));
}

3 个答案:

答案 0 :(得分:2)

使用StringBuilder的其他答案的建议是一个很好的建议。但是,您可以使这更简单:

public static String randomDNAString(int dnaLength) {
    Random rand = new Random();
    StringBuilder dna = new StringBuilder(dnaLength);

    for (int i = 0; i < dnaLength; i++) {
        dna.append("ACGT".charAt(rand.nextInt(4)));
    }

    return dna.toString();
}

答案 1 :(得分:0)

我们可以通过将if链更改为switch语句并使用StringBuilder来改进您的答案。

public static String randomDNAString(int dnaLength) {
    Random rand = new Random();
    StringBuilder dna = new StringBuilder();
    for(int i=0;i<dnaLength;i++) {
        switch(rand.nextInt(4)) {
            case 0:
                dna.append("A");
                break;
            case 1:
                dna.append("C");
                break;
            case 2:
                dna.append("G");
                break;
            case 3:
                dna.append("T");
                break;
        }
    }
    return dna.toString();
}

要打印输出,请尝试:

System.out.println(randomDNAString(10));

答案 2 :(得分:0)

这没什么不对。我只是愚蠢,当我在主要的时候打电话给我使用

randomDNAString(20);

而不是

System.out.println(randomDNAString(20));

感谢大家的帮助,有时我只是笨蛋