Поскольку кто-то уже предложил подход else / if, здесь то же самое, но вместо этого используются троичные операторы:
char[] testStrand = {'A', 'T', 'T', 'A', 'G', 'C', 'T', 'A', 'T', 'G', 'A', 'A', 'C', 'C', 'T', 'A', 'C', 'C', 'A', 'T'};
for (int i = 0; i < testStrand.length; i++) {
testStrand[i] = testStrand[i] == 'A' ? 'T' :
testStrand[i] == 'T' ? 'A' :
testStrand[i] == 'G' ? 'C' :
testStrand[i] == 'C' ? 'G' : testStrand[i];
}
Обновление
Я заметил, что вы спросили, как вставить новые значения вдругой массив:
char[] testStrand = {'A', 'T', 'T', 'A', 'G', 'C', 'T', 'A', 'T', 'G', 'A', 'A', 'C', 'C', 'T', 'A', 'C', 'C', 'A', 'T'};
char[] reversed = new char[testStrand.length];
for (int i = 0; i < testStrand.length; i++) {
if (testStrand[i] == 'A') {
reversed[i] = 'T';
} else if (testStrand[i] == 'T') {
reversed[i] = 'A';
} else if (testStrand[i] == 'C') {
reversed[i] = 'G';
} else if (testStrand[i] == 'G') {
reversed[i] = 'C';
} else {
reversed[i] = testStrand[i];
}
}
Обновление 2
Но, эй, если вы чувствуете себя диким:
Character[] testStrand = {'A', 'T', 'T', 'A', 'G', 'C', 'T', 'A', 'T', 'G', 'A', 'A', 'C', 'C', 'T', 'A', 'C', 'C', 'A', 'T'};
List<Character> chars = Arrays.asList(testStrand);
chars.replaceAll(c -> {
switch (c) {
case 'A': return 'T';
case 'T': return 'A';
case 'C': return 'G';
case 'G': return 'C';
default: return c;
}
});
// print them out
chars.forEach(System.out::println);