我正在尝试找出部分任务,而现在我已经将头撞墙了。我正在尝试将DNA序列转录为RNA序列。但是,我正在获取ArrayOutOfBoundsException。我是使用增强的for循环进行迭代的新手,所以我的错误可能隐藏在某个地方。在满足if语句参数之前,它不会发生。
private String dnaToRNA(String input) { StringBuilder b = new StringBuilder(); char[] arr = input.toCharArray(); for (char a : arr) { if (a == 'T') { arr[a] ='U'; } } for (char a : arr) { if (a == 'A'){ b.append ('U'); } else if (a == 'U') { b.append('A'); } else if (a == 'C') { b.append('G'); } else if (a == 'G') { b.append('C'); } } return b.reverse().toString(); } } public void transcribe(int pos1) { if (pos1 > linkedList.size()) { System.out.println("Position selected out of range"); return; } if (linkedList.get(pos1) != null && isValidDNA(linkedList.get(pos1))) { linkedList.set(pos1, dnaToRNA(linkedList.get(pos1))); } }
问题出在声明中 arr[a] ='U';
arr[a] ='U';
问题是内部char表示为等于84,因此您得到一个。您需要使用传统计数器对其进行迭代:int``'T'``ArrayIndexOutOfBoundsException
char
int``'T'``ArrayIndexOutOfBoundsException
for (int i = 0; i < arr.length; i++) { if (arr[i] == 'T') { arr[i] ='U'; } }