如何解决如何在Java中将char值添加到char数组
我正在尝试将char的补数结果放入char数组互补1中。我以为我可以使用运算符,但这仅适用于字符串,但是我很难弄清楚如何将每个字母放入数组中以便可以显示结果。任何帮助都将非常感谢。
public static char[] complement(char[] dna) {
char[] complement1 = new char[17];
char comp = '\0';
for (char i = 0; i < dna.length; i++)
if (dna[i] == 'A') {
comp = 'T';
} else if (dna[i] == 'T') {
comp = 'A';
} else if (dna[i] == 'G') {
comp = 'C';
} else if (dna[i] == 'C') {
comp = 'G';
} else {
return null;
}
for (char c : dna)
return complement1;
return complement1;
}
public static void main(String[] args) {
String testData1 = "GCCTGTCGTAGCTTATC",testData2 = "GGCTGACGTAGCGTAAC";
System.out.printf("%s <-- complement --> %s%n",testData1,complement(testData1));
// int[] baseCounts = nucleotideCounts(testData1);
// System.out.printf("Nucleotide counts for %s: A: %d C: %d G: %d T: %d%n",// testData1,baseCounts[0],// baseCounts[1],baseCounts[2],baseCounts[3]);
System.out.printf("%s <-- reverse complement --> %s%n",reverseComplement(testData1));
System.out.printf("%s GC-content: %f%n",gcContent(testData1));
System.out.printf("Hamming distance between %s and %s: %d%n",testData2,hammingDistance(testData1,testData2));
// System.out.printf("Mutation points between %s and %s:%n%s%n",// testData2,// Arrays.toString(mutationPoints(testData1,testData2))); */
}
}
解决方法
可以使用switch
语句来映射核苷酸来简化代码。
另外,complement
的长度被固定为与输入dna
的长度相同,如果输入无效,则抛出运行时异常。
public static String complement(String dna) {
final int n = dna.length();
char[] complement = new char[n];
for (int i = 0; i < n; i++) {
char comp = '\0';
switch (dna.charAt(i)) {
case 'A': comp = 'T'; break;
case 'T': comp = 'A'; break;
case 'G': comp = 'C'; break;
case 'C': comp = 'G'; break;
default:
throw new IllegalArgumentException("Invalid nucleotide detected at " + i + ": " + dna.charAt(i) + " in DNA: " + dna);
}
complement[i] = comp;
}
return new String(complement);
}
测试
String testData1 = "GCCTGTCGTAGCTTATC",testData2 = "GGCTGACGTAGCGTAAC";
System.out.printf("%s <-- complement --> %s%n",testData1,complement(testData1));
System.out.printf("%s <-- complement --> %s%n",testData2,complement(testData2));
输出:
GCCTGTCGTAGCTTATC <-- complement --> CGGACAGCATCGAATAG
GGCTGACGTAGCGTAAC <-- complement --> CCGACTGCATCGCATTG
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。