我正在试图弄清楚任务的一部分,而且我已经在墙上撞了一段时间了。我正在尝试将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)));
}
}
答案 0 :(得分:3)
问题出在声明arr[a] ='U';
问题在于char
在内部表示为int
而'T'
等于84,因此您获得了ArrayIndexOutOfBoundsException
。
你需要用传统的计数器迭代它:
for (int i = 0; i < arr.length; i++) {
if (arr[i] == 'T') {
arr[i] ='U';
}
}
答案 1 :(得分:0)
你希望1小于大小,所以:if (pos1 >= linkedList.size()) {
。
当pos1 == linkedList.size()
超出范围时