如何在java中向char数组添加char值

如何在java中向char数组添加char值,java,arrays,char,Java,Arrays,Char,我试图将字符的补码结果放入字符数组补码1中。我想我可以使用运算符,但这只适用于字符串,但我很难弄清楚如何将每个字母放入数组中,以便它可以显示结果。任何帮助都很好,谢谢你 public static char[] complement(char[] dna) { char[] complement1 = new char[17]; char comp = '\0'; for (char i

我试图将字符的补码结果放入字符数组补码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",
                testData1, reverseComplement(testData1));
        System.out.printf("%s GC-content: %f%n", testData1,
                gcContent(testData1));
        System.out.printf("Hamming distance between %s and %s: %d%n",
                testData1, testData2,
                hammingDistance(testData1, testData2));
        // System.out.printf("Mutation points between %s and %s:%n%s%n", testData1,
        // testData2,
        // Arrays.toString(mutationPoints(testData1, testData2))); */
    }
}
公共静态字符[]补码(字符[]dna){
char[]1=新字符[17];
char comp='\0';
对于(字符i=0;i
使用
switch
语句映射核苷酸可以简化代码

另外,
补码
的长度固定为与输入
dna
的长度相同,如果输入无效,则引发运行时异常

公共静态字符串补码(字符串dna){
final int n=dna.length();
字符[]补码=新字符[n];
对于(int i=0;i
试验

String testData1=“GCCTGTCGTAGCTTATC”,
testData2=“ggctgacgtagtaac”;
System.out.printf(“%s%s%n”,testData1,补码(testData1));
System.out.printf(“%s%s%n”,testData2,补码(testData2));
输出:

GCCTGTCGTAGCTTATC <-- complement --> CGGACAGCATCGAATAG
GGCTGACGTAGCGTAAC <-- complement --> CCGACTGCATCGCATTG
GCCTGTCGTAGCTTATC cggacagcatcgatag
GGCTGACGTACGTAAC CCGACTGCATCGCATG

上一个forloop毫无意义。要将字母分配给数组,请执行以下操作:
dna[i]='a'
,其中
i
是索引,不能超过数组的
length-1
。只需重复更改
comp
变量。您从未将其设置为
complement1
数组中的值。您无法真正“添加”到数组中。将数组中的值设置为
complement1[0]=“c”
中的值更为正确。但是在您的例子中,如果您只是使用现有的字符串运算符构建字符串,然后在最后调用yur string上的
tocharray()
方法将其转换为字符数组,则可能会更简单。我将其更改为字符串,这使它变得更简单,感谢上帝
GCCTGTCGTAGCTTATC <-- complement --> CGGACAGCATCGAATAG
GGCTGACGTAGCGTAAC <-- complement --> CCGACTGCATCGCATTG