Java: создание строки длины X со случайными символами

1

Проблема, которую я должен сделать, заключается в следующем

public static String randomDNAString (int dnaLength)/** * @param dnaLength неотрицательный int * @возвращать случайный Строка длины 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));
}
  • 2
    Что это возвращает? Это, кажется, хорошо.
  • 0
    Он должен вернуть строку. Но когда я запускаю его, ничего не возвращается
Показать ещё 5 комментариев
Теги:
tostring

3 ответа

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

В этом нет ничего плохого. Я просто тупой, и когда я назвал это в основном, я использовал

randomDNAString(20);

вместо

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

Спасибо за вашу помощь всем, я просто тупой иногда

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));

Ещё вопросы

Сообщество Overcoder
Наверх
Меню