#java
#java
Вопрос:
Короче говоря, я пытаюсь взять строку, затем разделить ее на каждые три символа, добавляя эти три символа в массив по мере его выполнения.
Начальный ввод в функцию (RawData) выглядит примерно так:
ATGCCACTATGGTAG
но может различаться по длине.
Я пытаюсь преобразовать приведенные выше данные (представляющие нуклеотиды) в отдельные кодоны следующим образом:
[ATG,CCA,CTA,TGG,TAG]
обратите внимание, что каждый фрагмент из 3 теперь индексируется в массив.
Это мой код:
public static void codonList(String rawData) {
int previous = 0;
String[] codons = new String[rawData.length() / 3];
for (int i = 0; i < rawData.length(); i ) {
previous ;
// goes through each
// split at every third then append to end of codon string
if (previous % 3 == 0) {
String chunk = rawData.substring(previous - 3, previous);
codons[i] = chunk;
System.out.println(Arrays.toString(codons));
}
}
}
и его вывод:
[null,null,AGT,null,null]
Я на 90% уверен, что это простое решение, но, похоже, не могу его понять. Если кто-то может дать некоторое представление, это было бы очень ценно!
Комментарии:
1. ПОДСКАЗКА:
String chunk = rawData.substring(i*3, i*3 3);
. И избавиться отprevious
.
Ответ №1:
У вас есть несколько проблем.
- вы перебираете всю строку, вы хотите создавать только
rawData.length()/3
кодоны. - Как намекнул Кевин, получите 3 символа:
String chunk = rawData.substring(i*3, i*3 3);
- выводите массив только после завершения обработки строки.
public static void codonList(String rawData) {
String[] codons = new String[rawData.length() / 3];
for (int i = 0; i < rawData.length() / 3; i ) {
// goes through each
// split at every third then append to end of codon string
String chunk = rawData.substring(i*3, i*3 3);
codons[i] = chunk;
}
System.out.println(Arrays.toString(codons));
}
Вывод:
[ATG, CCA, CTA, TGG, TAG]
Комментарии:
1. да, все эти решения, которые вы, ребята, предоставили, отлично работают, приятно видеть несколько методов. Наличие этой печати внутри цикла for было просто для целей отладки. Забыл вернуть его обратно. Спасибо за информацию!